C ++ 03中的标识符是否允许使用美元符号?

时间:2009-06-01 20:55:31

标签: c++ identifier

C ++标准对在标识符中使用美元符号有何看法,例如Hello$World?他们合法吗?

7 个答案:

答案 0 :(得分:16)

c ++标识符可以由以下任何一种组成:_(下划线),数字0-9,字母a-z(大写和小写),不能以数字开头。

有许多例外情况,因为C99允许对标准进行扩展(例如visual studio)。

答案 1 :(得分:14)

他们是非法的。标识符中唯一合法的字符是字母,数字和_。标识符也不能以数字开头。

答案 2 :(得分:11)

在C ++ 03中,前面给出的答案是正确的:它们是非法的。然而,在C++11情况发生了变化:

这里的答案是“可能”
根据§2.11,标识符可能包含 digits identifier-nondigits ,从后者之一开始。 identifier-nondigits 是常用的a-zA-Z和下划线,此外,因为C ++ 11它们包含通用字符名称(例如\uBEAF\UC0FFEE32),和其他实现定义的字符。因此,如果允许在标识符中使用$,则它是实现定义的。 VC10及以上版本也支持早期版本。它甚至支持こんばんは之类的标识符。

但是:我不会使用它们。使标识符尽可能可读和可移植。 $是实现定义的,因此不可移植。

答案 3 :(得分:8)

不合法,但很多(如果不是大多数)编译器都支持它们,请注意这可能取决于平台,因此由于汇编限制,gcc on arm不支持​​它们。

答案 4 :(得分:1)

相关部分是“2.8标识符[lex.name]”。从基本字符集开始,唯一有效的字符是A-Z a-z 0-9和_。但是,也允许使用é(U + 00E9)这样的字符。根据您的编译器,您可能需要输入é作为\ u00e9。

答案 5 :(得分:0)

它们在C ++中不合法。但是,一些C / C ++派生的语言(例如Java和JavaScript)确实允许它们。

答案 6 :(得分:0)

非法。我认为美元符号和反引号是键盘上唯一没有在C ++中使用的标点符号(“%”符号是格式字符串,通过引用C标准在C ++中)。