我对尝试编译MFC项目时遇到的这个错误感到有点困惑。为简化起见,我希望列举这样的内容:
enum Cars
{
Audi,
Bmw,
Ford
};
哪个工作正常,但在我定义任何'汽车'时编译错误,如:
#define Audi 100
...
...
enum Cars
{
Audi,
BMW,
Ford
};
我得到的错误都在我写的标题和源文件
中错误C2143:语法错误:在'常量'之前缺少'}'
错误C2143:语法错误:缺少';'在'}'之前
错误C2059:语法错误:'}'
我不知道为什么会出现语法错误,因为两个部分都可以单独编译。我知道我可以很容易地在枚举定义中定义Audi = 100,但在我的实际项目中我不能这样做。
答案 0 :(得分:2)
当您进行定义时,就像进行搜索并替换该文本然后进行编译一样,因此对于您的示例,您现在让奥迪变为100,因此您的枚举看起来像
enum Cars
{
100,
BMW,
Ford
};
由于100不是有效的枚举名称,因此您会看到此错误。
如果您希望音频值为100,则可以
enum Cars
{
Audi = 100,
BMW,
Ford
};
虽然在执行此操作时要小心,因为宝马和福特现在的值分别设置为101,102,因此如果这是在头文件中,您需要确保完全重新编译。
答案 1 :(得分:-2)
我更喜欢保留宏并使用C ++ 11的以下功能。 enum class Cars {AUDI = 100,BMW,FORD};