是否有任何特定原因为何未将对指定的初始化程序的支持添加到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扩展)。