编译器:Microsoft Visual C++ 2010 Express,SP1 项目属性:C/C++ 高级编译为:编译为 C 代码 (/TC)
信息:
error C2099: initializer is not a constant
显示错误的简单测试用例:
typedef struct
{
char *stringP;
int lino;
} foo_t;
#define bad {static foo_t foo ={__FILE__,__LINE__};}
#define good {static foo_t foo ={"filename",10};}
int main()
{
bad; // error C2099: initializer is not a constant
good; // no error
return 0;
}
这会产生C2099
错误。此代码在 gcc 但不是 Visual C++ 2010 Express 下正确编译和链接(编译为 C 代码 - 即 /TC 选项)。