Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的标识符是否允许使用美元符号+;03? > C++标准在标识符中使用美元符号时说什么,例如 hello $Word < /C>?它们合法吗?_C++_Identifier - Fatal编程技术网

C+中的标识符是否允许使用美元符号+;03? > C++标准在标识符中使用美元符号时说什么,例如 hello $Word < /C>?它们合法吗?

C+中的标识符是否允许使用美元符号+;03? > C++标准在标识符中使用美元符号时说什么,例如 hello $Word < /C>?它们合法吗?,c++,identifier,C++,Identifier,它们是非法的。标识符中唯一的合法字符是字母、数字和_。标识符也不能从数字开始。 它们在C++中是不合法的。然而,一些C/C++派生语言(如java和JavaScript)确实允许它们。< P> C++标识符可以由以下任何一种组成:(下划线)、数字0~9、字母A Z(上下两种情况),不能以数字开头。 C99允许对标准进行扩展(例如),因此有许多例外情况。非法。我认为美元符号和背景是我的键盘上唯一的标点符号,在C++中没有使用(“%”符号是格式字符串,在C++中引用C标准)。不合法,但是如果不是大多

它们是非法的。标识符中唯一的合法字符是字母、数字和_。标识符也不能从数字开始。

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

< P> C++标识符可以由以下任何一种组成:(下划线)、数字0~9、字母A Z(上下两种情况),不能以数字开头。
C99允许对标准进行扩展(例如),因此有许多例外情况。

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

不合法,但是如果不是大多数编译器支持,很多人都会注意到这一点,注意这可能取决于平台。因此,由于装配限制,arm上的gcc不支持它们。

相关部分为“2.8标识符[lex.name]”。从基本字符集中,唯一有效的字符是A-Z A-Z 0-9和Z。然而,像é(U+00E9)这样的字符也是允许的。但是,根据编译器的不同,您可能需要以\u00e9的形式输入é。

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

这里的答案是“可能”:
根据§2.11,标识符可以由数字和非数字标识符组成,从后者之一开始。非数字标识符通常是
a-z
a-z
和下划线,此外,由于C++11,它们还包括通用字符名(例如
\uBEAF
\UC0FFEE32
)、和其他实现定义的字符。因此,如果允许在标识符中使用
$
,则它是实现定义的。VC10和更高版本也支持这一点,可能是更早的版本。它甚至支持
こんばんは


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

%也是模数操作符。这是愚蠢的,它允许在VS中总是要对标准进行自己的扩展…每个主要的C++编译器都有很多扩展。MS在这方面不是唯一的。GCC也允许美元符号。你误解了附录E-(规范)“标识符通用字符名”[扩展id]。但是,这会添加更多的字母(重音或来自不同的脚本),而不是像$这样的符号。请注意,这仅适用于C++03。C++ 11允许在标识符中通用字符名称和实现定义的字符。@ ZIFRE:我相信他是专门询问C++标准的,因为不是所有编译器都符合100%标准,有些则有自己的扩展,使其合法。C99标准明确允许平台定义附加的法律。标识符字符。PDP11和VAX的Decus C编译器都允许$,因为大多数系统调用的名称中都包含$。“美元预留给数字”。我没有更旧的C标准或手边的C++标准来检查是否符合标准……ZIFRE:你的评论是否更需要?因为你需要问,不,他不能在他最喜欢的编译器中简单地尝试它,因为这会告诉他编译器是否允许它,而不是语言是否允许。在C++中,这是一个重要的区别。FIY:尽管标准GCC非法,通常允许它们,但这是允许向后兼容性的。它不应用于任何现代代码。