簡體   English   中英

我可以在 C++ 中使用非 ASCII 字符創建變量名嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM