Visual C ++ 2010 Express C2099使用宏中的常量初始化的结构出错
||
编译器: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选项)。
没有找到相关结果
已邀请:
3 个回复
荆怖赡
中的代码;如果您没有立即发现问题,请尝试对其进行调整(例如,将复杂的内容替换为0)-这应该可以提示问题。 (由于您的系统比我的系统新得多,因此某些细节可能会有所不同,例如,您系统上的编译器可能称为“ 4”以外的名称,但这种想法可能会起作用)
埃庐
以后没有任何问题。这似乎是Microsoft C编译器带来的麻烦。我使用过的其他C编译器似乎对ѭ5的使用没有任何问题。 我唯一能找到的解决方法是将文件编译为C ++代码(/ Tp)。
冕偷淮款