gpt4 book ai didi

gcc - 是否可以让 GCC 使用 BOM 源文件编译 UTF-8?

转载 作者:行者123 更新时间:2023-12-04 01:09:37 25 4
gpt4 key购买 nike

我在 Windows 上使用 Microsoft Visual Studio 和在 uBuntu Linux 上使用 GCC 开发 C++ 跨平台。
在 Visual Studio 中,我可以在我的代码中使用 unicode 符号,如“π”和“²”。 Visual Studio 始终将源文件保存为带有 BOM(字节顺序标记)的 UTF-8。
例如:

// 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 在不删除 BOM 的情况下编译 UTF-8 文件?

我正在使用:
  • Windows 7
  • Visual Studio 2010

  • 和:
  • uBuntu Oneiric 11.10
  • GCC 4.6.1(由 apt-get install gcc 提供)

  • 编辑:
    正如第一个评论者指出的那样,我的问题是 不是 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/7899795/

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