编译C代码时出现ISO C ++错误

时间:2014-10-08 14:35:38

标签: c++ c

我试图编译一个.C文件,其中包含一个像这样的.h文件

typedef struct myType
{
    char* myString = "NOT SET";
    int   myInt    = -1;
}

跑步" gcc -c myFile.c"引发以下错误:

Error: ISO C++ forbids initialization of member 'myString'
Error: making 'myString' static
Error: invalid in-class initialization of static data member of non-integral type ‘char*’
Error: ISO C++ forbids initialization of member 'myInt'
Error: making 'myInt' static
Error: invalid in-class initialization of static data member of non-integral type ‘int’

所以我的问题是双重的:首先,为什么我不能在标题中初始化结构的值?第二,为什么我在编写C代码时会出现ISO C ++错误?

1 个答案:

答案 0 :(得分:2)

当文件扩展名为gcc时,

.C会自动进入C ++模式(大写字母' C')。确保您的C源文件的扩展名为.c(小写字母' c')。