是否有任何特定原因为何未将对指定的初始化程序的支持添加到g ?是C99标准来晚了,而g 却被开发得更早,后来人们却不在乎这个问题的原因,还是在C ++语法中实现指定的初始化程序存在一些固有的困难?
正如我在评论中指出的那样,G ++不支持C99标准指定的初始化程序,但是它支持对C90的GNU扩展,它允许指定的初始化程序。所以这不起作用:
union value_t { char * v_cp; float v_f; }; union value_t my_val = { .v_f = 3.5f };
但这确实是:
union value_t my_val = { v_f: 3.5f };
这似乎是C和C 标准委员会之间协调不力的互动(没有特别好的理由说明C 不支持C99语法,他们只是没有考虑过)和GCC政治(C ++不应该)仅支持C99语法(仅因为它在C99中),但它应支持GNU扩展语法,该语法可以实现完全相同的功能,因为这是可以应用于任何一种语言的GNU扩展)。