在Visual Studio 2013中,以下代码段生成编译错误
错误C2440:'初始化':无法从'TestSubStruct'转换为'int'
#include <stdio.h>
typedef struct TestSubStruct {
int test;
} TestSubStruct;
typedef struct TestStruct {
TestSubStruct sub;
} TestStruct;
int main(int argc, char* argv[])
{
TestSubStruct r = {0};
TestStruct vp = { .sub = r}; // this line causes the error
return 0;
}
这很容易被重写,以便编译,但我想知道的是为什么代码不能按原样编译。它是否违反了静态初始化程序的规范?这只是MSVC的一个问题,还是其他编译器也无法构建它?
编辑:从评论者看来,这是一个MSVC问题。在这种情况下,我的问题是:MSVC 2013支持静态初始化器的确切限制是什么?