在Visual Studio或GCC的C++中使用emoji作为标识符名

2022-06-23 00:00:00 visual-studio compilation g++ c++

传统上,我们可以在C++中用作标识符一部分的可接受字符是第一个字符之后的_, a-z, A-Z0-9

是否可以将Visual Studio或GCC配置为接受表情符号作为标识符名的一部分(或任何其他任意Unicode字符)?

int a = 2, ?? = 3;
??++; ?? *= 2;
int ∑(int a, int b) {return a + b;}
cout << ∑(a * ??, 3) << endl;

const double π = 3.14159;
double α = sin(π / 2.0);

解决方案

我们可以从Unicode/special characters in variable names in clang not allowed?看出,C++标准允许某些扩展字符集。emoji codes似乎在允许的范围内。

据我所知live exampleVisual Studio 2013支持标识符中的扩展字符,C++ Identifiers documentation:

C++规范允许使用Unicode字符命名

而且,Visual C++本身也允许。不受ASCII限制。

,并提供了表明自2005年起允许这样做的链接。不过,正如bames53指出的那样,Windows对表情符号的尊重可能存在局限性。

gcc似乎不支持这一点,除非使用Character sets文档中的转义代码:

在标识符中,ASCII范围之外的字符只能使用‘u’和‘U’转义指定,不能直接使用。如果使用-std=c90之类的选项指定严格的ISO C90一致性,或者使用-fno扩展标识符,则不允许在标识符中使用这些转义。

相关文章