[英]Avoiding predefined numeric constants conflicting with enumerations in C++
这个问题与GCC有关,它是由bison在生成的头文件中说“数值常量前的语法错误”, 我遇到了一个关于enum的错误(我认为) ,但是那里的答案仅给出了为什么有人会看到该错误的原因, “错误:数字常量之前的语法错误。” 除非我不加掩饰,否则我看不出任何避免这种问题的好方法(当然只是简单地重命名我们的枚举常量)。 因此,我的问题是:除了简单地重命名枚举常量以避免这种命名冲突外,还有其他(首选)方法可以解决此问题吗? 使用名称空间似乎不起作用。
UPDATE(对于名称空间):我收到此错误:
enum.cpp:5:5: error: expected identifier before numeric constant
enum.cpp:5:5: error: expected ‘}’ before numeric constant
enum.cpp:5:5: error: expected unqualified-id before numeric constant
enum.cpp:7:1: error: expected declaration before ‘}’ token
从这个程序:
#include <sys/ioctl.h>
namespace mine {
enum test {
NCC
};
}
int main(int argc, char** argv)
{
return 0;
}
注意,编译该程序时会出现相同的错误:
#define NCC 5
namespace mine {
enum test {
NCC
};
}
int main(int argc, char** argv)
{
return 0;
}
我唯一知道的方法是取消定义要在枚举中重新定义的内容/符号:
#include <sys/ioctl.h>
#undef NCC
namespace {
enum {
NCC
}
}
这样编译。
请记住,我假设您确实要重新定义该符号。 如果是这样,那就是您的做法。
在C ++中,可以使用名称空间使它们保持混乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.