在Visual Studio或GCC中使用表情符号作为c ++中的标识符名称

Xoc*_*zin 14 c++ compilation g++ visual-studio

传统上,接受的字符我们可以如在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);
Run Code Online (Sandbox Code Playgroud)

Sha*_*our 5

我们可以从clang中的变量名中的Unicode /特殊字符看到不允许的?C++标准允许某些扩展字符集.该表情符码似乎陷入了允许的范围.

据我所知,使用此实例示例 Visual Studio 2013支持标识符中的扩展字符,这得到C++标识符文档的支持:

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

而且,Visual C++本身也允许.不限于ASCII.

并提供了指示自2005年以来允许这样做的链接.虽然bames53指出可能存在Windows限制表情符号.

gcc另一方面,除了使用转义码,它们的字符集文档似乎不支持这个:

在标识符中,ASCII范围之外的字符只能使用'\ u'和'\ U'转义符指定,不能直接使用.如果使用-std = c90等选项指定了严格的ISO C90一致性,或者使用了-fno-extended-identifiers,则标识符中不允许使用这些转义符.