我试图编译一个.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 ++错误?
答案 0 :(得分:2)
gcc
时, .C
会自动进入C ++模式(大写字母' C')。确保您的C源文件的扩展名为.c
(小写字母' c')。