在 C++ 代码中使用希腊符号

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

我曾经在 C++ 代码的变量声明中使用像 α 和 ε 这样的希腊符号,没有任何问题。我将平台更改为 Ubuntu,然后在编译过程中开始出现此类错误:

stray ‘\316’ in progra
stray ‘\261’ in program

我可以在不更改代码的情况下解决这个问题吗?

c++ variables environment
2个回答
2
投票

在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++ 代码的博客中得到了提示


0
投票

是的,您可以在 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 标识符的文件。

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