Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.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++代码,比如: int $T$S;_C++_Variables_Visual C++_Identifier_Variable Names - Fatal编程技术网

变量名中的美元符号? 我偶然发现了一些C++代码,比如: int $T$S;

变量名中的美元符号? 我偶然发现了一些C++代码,比如: int $T$S;,c++,variables,visual-c++,identifier,variable-names,C++,Variables,Visual C++,Identifier,Variable Names,首先,我认为它是某种PHP代码或错误地粘贴在那里的东西,但它编译并运行得很好(在MSVC2008上) 什么类型的字符在C++中是有效的,还有其他奇怪的字符可以使用吗?< /P> < P>根据标准的唯一合法字符是字母数字。 和下划线。标准确实要求这一点 Unicode认为字母是可以接受的(但只能作为单个字符) 代码点字符)。实际上,实现提供了扩展 (也就是说,有些人接受美元)和限制(大多数人不接受所有的限制) 所需的Unicode字符)。如果你希望你的代码是可移植的, 将符号限制为26个不带重音的

首先,我认为它是某种PHP代码或错误地粘贴在那里的东西,但它编译并运行得很好(在MSVC2008上)


<>什么类型的字符在C++中是有效的,还有其他奇怪的字符可以使用吗?< /P> < P>根据标准的唯一合法字符是字母数字。 和下划线。标准确实要求这一点 Unicode认为字母是可以接受的(但只能作为单个字符) 代码点字符)。实际上,实现提供了扩展 (也就是说,有些人接受美元)和限制(大多数人不接受所有的限制) 所需的Unicode字符)。如果你希望你的代码是可移植的, 将符号限制为26个不带重音的字母,大写或小写
据我所知,十位数字和‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘’


所有其他字符都应该是编译器扩展。

它是某些编译器的扩展,不在C标准中

MSVC: 特定于Microsoft的 < >微软C++标识符前2048个字符是显著的。用户定义类型的名称由编译器“修饰”以保留类型信息。结果名称(包括类型信息)不能超过2048个字符。(有关详细信息,请参见修饰名称。)影响修饰标识符长度的因素有:

  • 标识符表示用户定义类型的对象还是从用户定义类型派生的类型
  • 标识符是表示函数还是从函数派生的类型
  • 函数的参数数

<强> $符号也是VisualC++中的一个有效标识符。< /强>

// dollar_sign_identifier.cpp
struct $Y1$ {
    void $Test$() {}
};

int main() {
    $Y1$ $x$;
    $x$.$Test$();
}

最新版本:

通用条款: 6.42标识符名称中的美元符号 在GNUC中,您通常可以在标识符名称中使用美元符号。这是因为许多传统的C实现都允许这样的标识符。但是,一些目标机器上不支持美元符号标识,通常是因为目标汇编程序不允许美元符号标识


“罐头”!=“应该。”在变量名中使用
$
是该语言的一个扩展,可能不适用于其他编译器(除了可能是GCC,它对所有语言扩展都有标志)。我甚至会说它会使用奇怪的字符阻塞变量名,所以不,我不想使用它,了解一下:-)标识符中使用
$
在虚拟机上相当普遍,许多系统库例程的名称都类似于
SYS$SOMETHING
。g++支持将其作为扩展,但如果指定
-pedantic
@KeithThompson,则会发出警告:目前,gcc 4.9.3甚至不会使用
-pedantic
开关发出警告。在这期间会有什么变化吗?@AlBundy:C标准允许在标识符中使用“其他实现定义的字符”。即使使用
-pedantic
,也不需要任何警告(尽管我个人希望有一种简单的方法来警告这些事情,而无需为每个功能指定单独的选项)。它不仅在Microsoft的编译器中有效。G++还支持将其作为扩展。但是,是的,它是特定于编译器的,不是标准的一部分。如果您引用标准中支持您答案的特定部分,这将是一个更好的答案。@Caleb它位于明显的位置:§2.11标识符。