Git破坏了我的程序

Git breaks my program?

本文关键字:程序 我的 坏了 Git      更新时间:2023-10-16

我在一个主分支下编写了几个程序,我使用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

当我切换到主分支时,我得到相同的错误信息。但是,如果我将文件重命名为其他东西,比如"new_prime .cpp",那么make file不会引起任何问题。GNUmakefile和prime.cpp都没有被修改。我也没有安装任何额外的软件包。它也不是编辑器——我使用的是emacs和TextWrangler。是什么导致了这个问题?

当源文件(或本例中包含的文件)是二进制文件时,GCC生成的错误就会发生。这很容易通过创建一个包含一个二进制文件(例如/bin/ls)的源文件来复制。创建command:

#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. 在你的搜索路径中有另一个"矢量"。

我猜是第二个。检查并确保在编译器包含路径中没有一个名为vector的二进制文件。