[英]Can I create variable name with non-ASCII characters in c++?
我從 2010 年開始用 C++ 編寫。
我只是不小心在我的代碼中輸入了“й”字母,將鼠標懸停在它上面以刪除,並注意到 Visual Studio 只是說沒有變量“й”。
我寫了int й = 1;
它剛剛編譯!
我錯過了什么?
打賭,它可能是 c++ 11,14 或類似的功能。
這是標准所說的([lex.phases]):
如有必要,物理源文件字符以實現定義的方式映射到基本源字符集(為行尾指示符引入換行符)。 接受的物理源文件字符集是實現定義的。
因此,您的特定實現支持這一點,但不能保證可移植到任何其他實現。
如果您查看本文的附件 E,您可以看到某些 unicode 范圍允許作為變量名。 這些范圍包括:
00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF 0100-167F, 1802F-20F-20F-20F-20E-16D-16D 203F-2040, 2054, 2060-206F 2070-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF 3004-3007, 3021-30FD30F30F30F30F30F30F3030F3 FDF0-FE44, FE47-FFFD 10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD, 60000-6FFFD, 70000-7FFFD, 8000000000FF-FD, 80000000000000000000FF , C0000-CFFFD, D0000-DFFFD, E0000-EFFFD
好吧,似乎對根據MSDN定義標識符的 Unicode 字符沒有限制
struct テスト // Japanese 'test'
{
void トスト() {} // Japanese 'toast'
};
int main() {
テスト \u30D1\u30F3; // Japanese パン 'bread' in UCN form
パン.トスト(); // compiler recognizes UCN or literal form
}
我很失望cplusplus.com對此一無所知。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.