正如我在评论中指出的那样,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扩展)。



