编译C代码时的ISO C++错误

编译C代码时的ISO C++错误,c++,c,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

我正在尝试编译一个.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’

所以我的问题有两个:第一,为什么我不能在我的头中初始化struct的值?第二,为什么我在编译C代码时会遇到ISO C++错误?

GCC在文件扩展名为C大写字母“C”时自动进入C++模式。确保你的C++源文件有扩展名。C小写字母“C”,

C或C++?你的显示包含C++的BTW.请创建A/..在这样的结构中初始化东西是合法的吗?我认为这是合法的,因为C++11…不要使用typedef结构成语,它是邪恶的