Git打破了我的计划?

时间:2014-03-18 02:45:43

标签: c++ git emacs compilation makefile

我在一个master分支下编写了几个程序,我使用GNUmakefile编译。今天,在我创建了一个新分支v4.3,然后切换到新分支,然后编译之后,我收到以下错误消息:

lucerne:lucerne$ make primes
g++-mp-4.8 -std=gnu++0x -g -O2 -W -Wall -Wextra  -MD -MF .deps/primes.d -MP  -I. -c -o primes.o primes.cpp
In file included from primes.cpp:2:0:
./vector:1:1: error: stray '\317' in program
 ????_TEXT
 ^
./vector:1:1: error: stray '\372' in program
./vector:1:1: error: stray '\355' in program
./vector:1:1: error: stray '\376' in program
./vector:1:1: error: stray '\7' in program
./vector:1:6: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '\1' in program
./vector:1:1: error: stray '\3' in program
./vector:1:10: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '\200' in program

切换到master分支时收到相同的错误消息。但是,如果我将文件重命名为其他内容,例如" new_primes.cpp",则make file不会导致任何问题。 GNUmakefile或prime.cpp都没有被修改过。我还没有安装任何额外的包。它也不是编辑器 - 我正在使用emacs和TextWrangler。是什么导致了这个问题?

1 个答案:

答案 0 :(得分:3)

GCC生成的错误发生在源文件或本例中包含的文件是二进制文件时。通过创建具有单个包含到二进制文件(例如/ bin / ls)的源文件,可以轻松地再现这一点。使用:

创建stray.c
#include "/bin/ls"

快速编译:

gcc -c stray.c

产生以下输出:

In file included from stray.c:1:0:
/bin/ls:1:1: error: stray '\177' in program
/bin/ls:1:1: error: stray '\2' in program
/bin/ls:1:1: error: stray '\1' in program
/bin/ls:1:1: error: stray '\1' in program
/bin/ls:1:8: warning: null character(s) ignored [enabled by default]
/bin/ls:1:1: error: stray '\2' in program
/bin/ls:1:18: warning: null character(s) ignored [enabled by default]

“vector”似乎是一个二进制文件。

有两种可能的原因可以解释:

  1. C ++'vector'头文件已损坏。
  2. 搜索路径中还有另一个“向量”。
  3. 我猜它是第二个。检查并确保在编译器包含路径中没有名为vector的二进制文件。