解决方法
正如我在评论中指出的,G不支持C99标准指定的初始化程序,但它支持G90扩展到C90,允许指定的初始化程序.所以这不行:
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应该’ t支持C99语法,因为它是在C99,但它应该支持GNU扩展语法实现完全相同的事情,因为这是一个可以应用于任何一种语言的GNU扩展).