在 C/C++ 中使用 `$` 作为标识符安全吗?
在 C/C++ 中使用 $
字符作为标识符的一部分是否安全? 像这样,
int $a = 10;
struct $b;
class $c;
void $d();
Is it safe to use $
character as part of identifier in C/C++?
Like this,
int $a = 10;
struct $b;
class $c;
void $d();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不;它是某些编译器中的非标准扩展。
No; it is a non-standard extension in some compilers.
不可以。C 标准仅保证使用大小写英文字母、数字、
_
以及使用\u (hex-quad)
或指定的 Unicode 代码点\U(十六进制四元组)(十六进制四元组)
(有一些例外)。特定的编译器可能允许其他字符作为扩展名;然而,这是非常不可移植的。 (ISO/IEC 9899:1999 (E) 6.4.2.1, 6.4.3) 进一步注意,Unicode 代码点方法在标识符中基本上是无用的,尽管严格来说,它是允许的(在 C99 中),因为它仍然出现作为编辑器中的文字\uXXXX
。No. The C standard only guarantees the use of uppercase and lowercase English letters, digits,
_
, and Unicode codepoints specified using\u (hex-quad)
or\U (hex-quad) (hex-quad)
(with a few exceptions). Specific compilers may allow other characters as an extension; however this is highly nonportable. (ISO/IEC 9899:1999 (E) 6.4.2.1, 6.4.3) Further note that the Unicode codepoint method is basically useless in identifiers, even though it is, strictly speaking, permitted (in C99), as it still shows up as a literal\uXXXX
in your editor.这不是标准的,只有 Microsoft Visual Studio(据我所知)甚至允许在标识符中使用“$”字符。
因此,如果您希望您的代码可移植(或对其他人可读),我会说不。
This is not standard and only Microsoft Visual Studio (that I know of) even allows the '$' character in identifiers.
So if you ever want your code to be portable (or readable to others), I'd say no.