【发布时间】:2018-06-16 04:11:14
【问题描述】:
我正在尝试编译 3 个 cpp 文件,其中只有一个,Linux 上的 g++ 编译器正在读取每个字符之间的空格,导致无法编译。我得到数百甚至数千个x.cpp:n:n: warning: null character(s) ignored(其中 x 是名称,n 是数字)。我在 Visual Studio 中编写了程序,然后将它们复制到了 linux。其他 2 个文件编译得很好,我已经为几十个项目做了这个。这是怎么发生的?
我设法通过创建一个新文件并从原始 cpp 复制文本而不是复制文件来解决此问题。
现在,当我尝试启动 .o 文件时,我从终端收到错误消息 Permission Denied
【问题讨论】:
-
我很确定通过 linux/windows 换行可能会有所不同。从一个操作系统复制一个文件并在另一个操作系统中读取它而没有兼容性问题并不总是一件简单的事情。可能在复制/粘贴操作期间它会自动修复换行符以对 linux 编译器更友好
-
权限被拒绝,可能完全是另外一回事
-
查找 dos2unix(如果从 Windows 机器获取文件到 unix)和 unix2dos(如果采用其他方式)。换行符(特别是)和其他字符的处理是不同的,这些程序会相应地过滤文件。原因与您传输文件的方式有关(例如,在二进制与文本模式下)。
-
.o 文件是目标文件,不可执行。因此你得到“权限被拒绝”,系统不允许运行目标文件。
-
@Ken White 我通常不会复制/粘贴代码,但我必须这样做才能解决这个问题。行尾甚至不是这里的问题。问题是在以前没有空格的字符之间添加了空格。我一直在做的是在 Visual Studio 中编写代码并复制 cpp 文件。直到现在,这从来都不是问题,它只发生在复制的 4 个文件中的一个上
标签: c++ compiler-errors g++