首页 > 解决方案 > 为什么 g++ 编译器在我的 cpp 文件中的每个字符之间添加空格?

问题描述

我正在尝试编译 3 个 cpp 文件,其中只有一个,linux 上的 g++ 编译器正在读取每个字符之间的空格,导致无法编译。我得到数百个,如果不是数千个x.cpp:n:n: warning: null character(s) ignored(其中 x 是名称,n 是数字)。我在 Visual Studio 中编写了程序,然后将它们复制到了 linux。其他 2 个文件编译得很好,我已经为几十个项目做了这个。这是怎么发生的?

我设法通过创建一个新文件并从原始 cpp 复制文本而不是复制文件来解决此问题。

现在我从终端收到一条错误消息,Permission Denied提示我尝试启动 .o 文件时

标签: c++compiler-errorsg++

解决方案


您的编译器问题与换行符无关。

您正在尝试编译保存为 UTF-16 (Unicode) 的文件。如果文件包含任何非 ASCII 字符,Visual Studio 将在您背后执行此操作。

解决方案 1(推荐):坚持使用 ASCII。那么问题根本不会首先出现。

解决方案 2:在 Visual Studio 中将文件保存为 UTF-8,如此所述。您可能需要保存没有 BOM(字节顺序标记)的文件,如此所述。

WRT你的其他问题,寻找一个名为a.out(是的,真的)的文件并尝试运行它。并且不要-c在 g++ 命令行上指定。


推荐阅读