我曾经在 C++ 代码的变量声明中使用像 α 和 ε 这样的希腊符号,没有任何问题。我将平台更改为 Ubuntu,然后在编译过程中开始出现此类错误:
stray ‘\316’ in progra
stray ‘\261’ in program
我可以在不更改代码的情况下解决这个问题吗?
在MSVC 2012中不会有问题,你可以下载希腊语并像输入英语一样编写代码,所以以下是完全有效的
#include <iostream>
#define ακέραιος int
#define για for
#define τυπωθήτω std::cout
#define πέρας std::endl;
int _tmain(int argc, _TCHAR* argv[])
{
για (ακέραιος αριθμός(0); αριθμός < 5; ++αριθμός)
{
τυπωθήτω << αριθμός << πέρας;
}
return 0;
}
除此之外,我还没有找到一种简单/自然的方法来使用希腊语与 C++ 代码(或者公平的理由)
注意:VS 对希腊语的处理也不例外,它支持任何语言,我从阅读有关用希伯来语编写 C++ 代码的博客中得到了提示
是的,您可以在 Ubuntu 中使用
gcc
和 clang
编译器在 C 和 C++ 程序的符号名称中使用希腊字符。
对于
gcc
,您可能需要使用编译器选项 -finput-charset=utf-8
和/或 -fextended-identifiers
才能使其工作。但是,在大多数情况下,您不需要这些。特别是,如果您的语言环境的字符集已经配置为 UTF-8(十多年来这一直是 Debian/Ubuntu 上的默认字符集),您将不需要使用 -finput-charset
。检查 $LANG
环境变量以找出您所在区域的字符集。此外,-fextended-identifiers
是所有最新版本的 C 和 C++ 的默认设置。如果您使用某些编译器选项运行 gcc
来选择 C 或 C++ 的古董版本,-fextended-identifiers
将默认关闭,您可能需要指定它。但是,为什么需要古董编译器模式的古董代码中含有现代 UTF-8 标识符。
clang
还支持 -finput-charset
选项并从用户的区域设置读取输入字符集。并且,再次强调,不要切换到古董编译器模式来编译其中包含现代 UTF-8 标识符的文件。