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

C++ C++;作用域枚举数中的关键字,c++,enums,keyword,C++,Enums,Keyword,是否可以在作用域枚举器中使用保留标识符;重要的是,为什么不呢 enum struct token { void, int, return, not, if }; 为什么不呢很难回答,但其实并不那么重要。我们可以花数年的时间来讨论为什么一种语言中有一些特性,而另一些则没有。那将是浪费能源。这是您必须使用的语言定义,我熟悉的所有语言都遵循相同的范例。(.NET允许保留关键字用作标识符名称,但仅在前缀带有特殊符号时使用。)此外,没有一种语言是完美的,当然也不会满足任何程序员可能需要的每个标准 但是,

是否可以在作用域枚举器中使用保留标识符;重要的是,为什么不呢

enum struct token { void, int, return, not, if };
为什么不呢很难回答,但其实并不那么重要。我们可以花数年的时间来讨论为什么一种语言中有一些特性,而另一些则没有。那将是浪费能源。这是您必须使用的语言定义,我熟悉的所有语言都遵循相同的范例。(.NET允许保留关键字用作标识符名称,但仅在前缀带有特殊符号时使用。)此外,没有一种语言是完美的,当然也不会满足任何程序员可能需要的每个标准

但是,如果在EnnS和其他情况下允许关键字:编译器肯定会复杂得多,因此也会慢一些。此外,生成的代码更有可能使读者感到困惑,并降低其可维护性。C++已经足够多的绳子来挂起你自己。为什么要求更多

<>但是,如果您真的想要一个反映语言保留符号的值集合,那么您可以考虑使用诸如“代码> STD::MAP字符串和字符串值之类的东西。这可能接近于在没有任何内部巫毒的情况下给你想要的东西。

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

但是,如果在EnnS和其他情况下允许关键字:编译器肯定会复杂得多,因此也会慢一些。此外,生成的代码更有可能使读者感到困惑,并降低其可维护性。C++已经足够多的绳子来挂起你自己。为什么要求更多



<>但是,如果您真的想要一个反映语言保留符号的值集合,那么您可以考虑使用诸如“代码> STD::MAP字符串和字符串值之类的东西。这可能接近于在没有任何内部巫毒的情况下给你想要的东西。

No,因为它们是保留标识符。另一种方法是使用枚举类关键字{INT,VOID,DOUBLE}@乔希:糟糕的建议。在C++中几乎没有通用的编码准则,但其中一个是Apple的大写是为宏保留的。@ Christian Hackl,你有没有麻烦看一下我和我给出的例子链接的代码?“啊?”乔希:是的。它似乎有相同的缺陷。没有,因为它们是保留标识符。另一种方法是使用枚举类关键字{INT,VOID,DOUBLE}@乔希:糟糕的建议。在C++中几乎没有通用的编码准则,但其中一个是Apple的大写是为宏保留的。@ Christian Hackl,你有没有麻烦看一下我和我给出的例子链接的代码?“啊?”乔希:是的。它似乎也有同样的缺陷。提到可读性+1。如果关键字(与运算符相反)被允许有超过其“正常”含义的含义,并且基于任何上下文的行为都不一样,那就没有多大意义了。保留词是保留的,正如你已经指出的,它有预定义的语义。当然,我理解它不在它的范式之内,我显然不想陷入语言偏爱的争论。然而,我会质疑发现为什么不重要;因为知道为什么没有实现它的任何技术原因将有助于我开发实现我的预期用途的适当方法。也就是说,如果有任何技术限制的话。我也反对你的观点,认为这会使来源更难阅读,因为它的范围是有限的;我不明白为什么它会成为一个问题。就编译器而言,这就是编译器函数。程序员不必关心编译器的方法。如果很难,那就需要更多的时间。谢谢你的回复Sasik。@UserAbuser:啊,但是写跨平台代码怎么样?一旦您开始编写代码,并将其输入到不同平台上的不同编译器中,您就会很快了解编译器的内部结构!仅平台兼容性就足以实现尽可能简单的语言规范。看看C语言规范中的一个很好的例子。C++也不是那么复杂,尤其是考虑到它继承了C.@ UsSerabUsAsple的大部分功能:另一个想法:在这个问题上有很多“为什么不”的问题。就在昨天,我自己也获得了一枚金质徽章,许多重量级人物纷纷插话:现在,我的问题在VB(啊!)规范中确实有答案,但通常你会得到“因为这是规范团队决定的。”+1表示可读性。如果关键字(与运算符相反)被允许有超过其“正常”含义的含义,并且基于任何上下文的行为都不一样,那就没有多大意义了。保留词是保留的,正如你已经指出的,它有预定义的语义。当然,我理解它不在它的范式之内,我显然不想陷入语言偏爱的争论。然而,我会质疑发现为什么不重要;因为知道为什么没有实现它的任何技术原因将有助于我开发实现我的预期用途的适当方法。也就是说,如果有任何技术限制的话。我也反对你的观点,认为这会使来源更难阅读,因为它的范围是有限的;我不明白为什么它会成为一个问题。就编译器而言,这就是编译器