gpt4 book ai didi

gcc - 是否可以让GCC编译带有BOM的UTF-8源文件?

转载 作者:行者123 更新时间:2023-11-30 17:05:57 25 4
gpt4 key购买 nike

我在 Windows 上使用 Microsoft Visual Studio 并在 Ubuntu Linux 上使用 GCC 开发 C++ 跨平台。

在 Visual Studio 中,我可以在代码中使用“π”和“²”等 Unicode 符号。 Visual Studio 始终将源文件保存为 UTF-8,格式为 BOM (字节顺序标记)。

例如:

// A = π.r²
double π = 3.14;

仅当我先删除 BOM 时,GCC 才会愉快地编译这些文件。如果我不删除 BOM,则会收到如下错误:

wwga_hydutils.cpp:28:9: error: stray ‘\317’ in program

wwga_hydutils.cpp:28:9: error: stray ‘\200’ in program

这让我想到了一个问题:

有没有办法让 GCC 编译 UTF-8 文件而无需先删除 BOM?

<小时/>

我正在使用:

和:

<小时/>

正如第一位评论者指出的那样,我的问题不是 BOM,而是在字符串常量之外包含非 ASCII 字符。 GCC 不喜欢符号名称中的非 ASCII 字符,但事实证明 GCC 与带有 BOM 的 UTF-8 完全兼容。

最佳答案

根据GCC Wiki ,尚不支持此功能。您可以使用 -fextended-identifiers 并预处理代码以将标识符转换为 UCN。从链接页面:

perl -pe 'BEGIN { binmode STDIN, ":utf8"; } s/(.)/ord($1) < 128 ? $1 : sprintf("\\U%08x", ord($1))/ge;' 

另请参阅g++ unicode variable nameUnicode Identifiers and Source Code in C++11?

关于gcc - 是否可以让GCC编译带有BOM的UTF-8源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com