作用域枚举数中的c++关键字

C++ keywords in scoped enumerators

本文关键字:c++ 关键字 枚举 作用域      更新时间:2023-10-16

可以在限定范围的枚举数中使用保留标识符吗?重要的是,为什么不呢?

enum struct token { void, int, return, not, if };

为什么不这个问题很难回答,但其实并不是那么重要。我们可能会花费数年的时间来讨论为什么有些特性是在一种语言中,而有些特性不是。这是浪费精力。这是你必须使用的语言定义,我熟悉的所有语言都遵循相同的范式。(.NET允许使用保留关键字作为标识符名称,但仅当前缀为特殊符号时。此外,没有一种语言是完美的,当然也不可能满足每个程序员可能寻找的每一个标准。

但是考虑一下在枚举和其他情况下是否允许使用关键字:编译器肯定会变得非常非常复杂,因此也会变慢。此外,生成的代码更有可能使读者感到困惑,并使其难以维护。c++已经给你提供了很多自缢的余地。为什么要求更多?

但是,如果你真的想要一个反映语言保留符号的值的集合,那么你可以考虑使用像std::map这样带有字符串键和字符串值的东西。这可能接近于给你想要的,而不需要任何内部巫术。