【问题标题】:C++ compatibility between Visual Studio and gcc under LinuxLinux下Visual Studio与gcc的C++兼容性
【发布时间】:2011-03-24 11:05:01
【问题描述】:

我正在尝试在 Linux 下使用 QtCreator 构建一个用 VS 2008 编写的项目,但出现大量错误:

/home/ga/dev/CppGroup/MonteCarlo/main.cpp:1: error: stray ‘\377’ in program
/home/ga/dev/CppGroup/MonteCarlo/main.cpp:1: error: stray ‘\376’ in program
/home/ga/dev/CppGroup/MonteCarlo/main.cpp:1: error: stray ‘#’ in program
/home/ga/dev/CppGroup/MonteCarlo/main.cpp:1: warning: null character(s) ignored

等等

这是否意味着编译器无法正确处理 unicode?我该如何解决?

【问题讨论】:

    标签: c++ linux visual-studio gcc unicode


    【解决方案1】:

    这看起来像是小端 UTF-16 的 UTF-16 BOM。您需要确保文件保存为 UTF-8 或通过iconv -f UTF-16LE -t UTF8 myfile 手动转换。

    【讨论】:

    • 但是我想让它同时在两个系统上编译...我可以配置VS将它保存为utf-8吗?
    • @Grzenio:请参阅this questionthis question 了解如何设置它,this question 了解如何批量更改所有项目文件。
    • 是否可以在项目或解决方案级别进行配置?
    【解决方案2】:

    确保文件以 UTF-8 编码。使用允许您选择文件编码(例如 gedit 或 notepad++)的文本编辑器打开它并进行转换。我之前也遇到过类似的问题,但 UTF-8 文件可以正常工作(其他编码,如 UTF-16 将无法正常工作)。

    编辑:不要将您的资源脚本(如果有的话)转换为 UTF-8。资源编译器将无法读取它(至少在使用 MSVC 2008 时)。

    【讨论】:

    • 但是我想让它同时在两个系统上编译...我可以配置VS保存为utf-8吗?
    • 如果文件已经是 UTF-8,MSVC 将保留 UTF-8,它也可以使用它们。
    【解决方案3】:

    可能是您的文件使用 windows 编码,带有 ^M、\r\n...等字符 您是否尝试在编译之前在源文件上运行 dos2unix?

    【讨论】:

    • Windows 换行符非常适合 GCC。
    【解决方案4】:

    我想我在 unicode 文件中看到了“流浪...”。

    您可以配置编辑器或控制台(或两者)的编码设置来修复它。

    【讨论】:

      猜你喜欢
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多