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

问题描述 投票:0回答:2

传统上,我们可以在 C++ 中用作标识符一部分的可接受字符是第一个字符后的

_, a-z, A-Z
0-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);
c++ visual-studio compilation g++
2个回答
9
投票

Clang中是否不允许在变量名中使用Unicode和特殊字符?C++标准允许某些扩展字符集。 表情符号代码似乎属于允许的范围。

据我所知,使用这个 live example Visual Studio 2013 支持标识符中的扩展字符,C++ Identifiers 文档支持

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

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

它提供了一个链接,表明这是自 2005 年以来被允许的。虽然,正如 bames53 指出,关于表情符号可能存在 Windows 限制。

GCC 另一方面似乎不支持这一点,除非使用转义码,从他们的Character sets 文档:

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


3
投票

GCC 10 (2020-05-07) 起,GCC 现在接受表情符号作为标识符名称的一部分。

来源:Bug 67224。摘要:UTF-8 支持 GCC 中的标识符名称

© www.soinside.com 2019 - 2024. All rights reserved.