使用指定的初始化程序在另一个结构中初始化struct会导致Visual Studio 2013中的编译错误

时间:2014-05-17 03:55:30

标签: c visual-studio compiler-errors visual-studio-2013 designated-initializer

在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支持静态初始化器的确切限制是什么?

0 个答案:

没有答案