我是发现我不能用作为 g++ 4.7 的有效标识符,即使-fextended-identifiers
启用了该选项:
int main(int argc, const char* argv[])
{
const char* = "I'm very happy";
return 0;
}
main.cpp:3:3: 错误:程序 main.cpp:3:3 中的杂散'\360':错误:程序
main.cpp:3:3 中的杂散'\237'
:错误:杂散'\230' in程序
main.cpp:3:3: 错误: 程序中出现杂散“\203”
经过一番谷歌搜索,我发现标识符中尚不支持 UTF-8 字符,但通用字符名称应该可以工作。所以我将我的来源转换为:
int main(int argc, const char* argv[])
{
const char* \U0001F603 = "I'm very happy";
return 0;
}
main.cpp:3:15:错误:通用字符 \U0001F603 在标识符中无效
所以显然不是一个有效的标识符字符。但是,该标准明确允许来自附件 E.1 范围内的字符,10000-1FFFD
并且不允许将其作为 E.2 中的初始字符。
我的下一个努力是查看是否有任何其他允许的 Unicode 字符有效——但我尝试过的都没有。甚至连最重要的PILE OF POO ()字符都没有。
那么,为了有意义和描述性的变量名称,什么给出了?-fextended-identifiers
做广告还是不做?它仅在最新版本中支持吗?其他编译器有什么样的支持?