gpt4 book ai didi

c++ - 避免预定义数字常量与 C++ 中的枚举冲突

转载 作者:行者123 更新时间:2023-11-30 04:04:41 25 4
gpt4 key购买 nike

这个问题与GCC says "syntax error before numeric constant" in generated header file from bison有关和 I'm getting an error concerning enum (I think) ,但那里的答案只给出了人们可能会看到错误的原因,“错误:数字常量之前的语法错误。”除非我掩盖了它,否则我没有看到任何好的解决方案来避免这个问题(当然除了简单地重命名我们的枚举常量)。因此,我的问题是:除了简单地重命名枚举常量以避免这种命名冲突之外,还有其他(更好的)方法来解决这个问题吗?使用 namespace 似乎不起作用。

更新(命名空间):我收到此错误:

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++ - 避免预定义数字常量与 C++ 中的枚举冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23643681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com