【发布时间】:2012-09-23 09:52:30
【问题描述】:
我是 ???? 发现我无法使用 ???? 作为 g++ 4.7 的有效标识符,即使启用了 -fextended-identifiers 选项:
int main(int argc, const char* argv[])
{
const char* ???? = "I'm very happy";
return 0;
}
main.cpp:3:3: 错误:程序中出现杂散“\360”
main.cpp:3:3:错误:程序中出现“\237”
main.cpp:3:3: 错误:程序中出现“\230”错误
main.cpp:3:3: 错误:程序中出现“\203”
经过一番谷歌搜索,我发现UTF-8 characters are not yet supported in identifiers,但通用字符名称应该可以工作。所以我将我的源代码转换为:
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 是否按照它所宣传的那样做?它仅在最新版本中支持吗?其他编译器有什么样的支持?
【问题讨论】:
-
只是好奇:那些必须维护你的代码的人对你做了什么可怕的事情来让你得到像
\U0001F603这样的标识符? -
他们称它为 C/C++ - 这是合理的。
-
“为了有意义和描述性的变量名称” - ROFLMAO?对不起,我的意思是????。
-
问题是:“那么,为了有意义和描述性的变量名称,什么给出了?” --- 答案是:“停止胡闹,重新开始工作”。 :-)
-
该死,我想????是我一直在使用的课程的最合适的名称。