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

ISO C++ errors when compiling C code

本文关键字:ISO C++ 错误 代码 编译      更新时间:2023-10-16

我正在尝试编译一个.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++错误?

当文件扩展名为.C(大写字母'C')时,

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