Ale*_*ßen 2 c gcc initialization clang unions
给出以下C代码:
union Test {
struct {
int f1;
int f2;
};
struct {
int f3;
int f4;
int f5;
};
};
union Test test = {.f1 = 1, .f2 = 2};
Run Code Online (Sandbox Code Playgroud)
当我使用gcc 6.1.1编译它时f5将初始化为零.当我使用clang 3.8.0时,它不是.我试过-O0和-O2两个没有任何区别的编译器.这是在Linux x64上.
这是正确的行为,我可以告诉clang在这种情况下表现得像gcc吗?原因是我尝试使用clang编译一些代码,在这种情况下假设零初始化.
更新
由于答案到目前为止引用了C11.标准中是否有任何更改会更改以后版本中的行为?