C ++标准对在标识符中使用美元符号有何看法,例如Hello$World
?他们合法吗?
答案 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-z
,A-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 ++中)。