一尘不染

为什么在G ++中未实现指定的初始值设定项

linux

是否有任何特定原因为何未将对指定的初始化程序的支持添加到g ?是C99标准来晚了,而g 却被开发得更早,后来人们却不在乎这个问题的原因,还是在C
++语法中实现指定的初始化程序存在一些固有的困难?


阅读 265

收藏
2020-06-03

共1个答案

一尘不染

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

2020-06-03