我可以用c+;中的非ASCII字符创建变量名吗+;? 我从2010开始写C++。
我只是不小心在代码中输入了“l”字母,将鼠标悬停在上面以将其删除,然后注意到Visual Studio只是说没有变量“l” 我写了我可以用c+;中的非ASCII字符创建变量名吗+;? 我从2010开始写C++。,c++,ascii,C++,Ascii,我只是不小心在代码中输入了“l”字母,将鼠标悬停在上面以将其删除,然后注意到Visual Studio只是说没有变量“l” 我写了int l=1;,它刚刚编译 我错过了什么 BET,可能是C++ 11+14的特征或类似的东西。< P>如果你查看附件E,你可以看到有一些Unicode范围允许是变量名。这些范围包括: 00A8、00AA、00AD、00AF、00B2-00B5、00B7-00BA、00BC-00BE、00C0-00D6、, 00D8-00F6,00F8-00FF 0100-167F
int l=1;
,它刚刚编译
我错过了什么
BET,可能是C++ 11+14的特征或类似的东西。
< P>如果你查看附件E,你可以看到有一些Unicode范围允许是变量名。这些范围包括: 00A8、00AA、00AD、00AF、00B2-00B5、00B7-00BA、00BC-00BE、00C0-00D6、, 00D8-00F6,00F8-00FF 0100-167F,1681-180D,180F-1FF 200B-200D, 202A-202E、203F-2040、2054、2060-206F、2070-218F、2460-24FF、2776-2793、, 2C00-2DFF,2E80-2FF3004-3007,3021-302F,3031-303F 3040-D7FF F900-FD3D、FD40-FDCF、FDF0-FE44、FE47-FFFD 10000-1FFD、20000-2FFD、, 30000-3FFFD,40000-4FFFD,50000-5FFFD,60000-6FFFD,70000-7FFFD, 80000-8FFFD、90000-9FFFD、A0000-AFFFFD、B0000-BFFFD、C0000-CFFFD、, D0000-DFFFD,E0000-EFFFD好的,似乎没有对Unicode字符使用的限制,根据
对此我感到失望,因为我对此一无所知。以下是标准所说的([lex.phases]): 如有必要,将以实现定义的方式将物理源文件字符映射到基本源字符集(为行尾指示符引入新行字符)。 接受的物理源文件字符集由实现定义
因此,您的特定实现支持这一点,但不能保证可移植到任何其他实现。不要使用cplusplus.com,使用cplusplus.com在准确性或完整性方面并没有很好的声誉。@Shawn许多俄罗斯网站说它应该是非常拉丁的。不,这是visual studio接受的使用特殊字符。GCC甚至不接受
é
,也不接受l
。GCC对非ascii字符的支持较差。
struct テスト // Japanese 'test'
{
void トスト() {} // Japanese 'toast'
};
int main() {
テスト \u30D1\u30F3; // Japanese パン 'bread' in UCN form
パン.トスト(); // compiler recognizes UCN or literal form
}