我已经用C语言编写了一个程序,并且正在Windows的cygwin中使用一个make文件来编译该文件。在Visual Studio中可以很好地执行,但是当我尝试使用make文件时,会发生以下情况:
错误:
$ make
gcc -c -o mathTable.o mathTable.c
mathTable.c:1:1: error: stray ‘\377’ in program
▒▒# i n c l u d e < s t d l i b . h >
^
mathTable.c:1:2: error: stray ‘\376’ in program
▒▒# i n c l u d e < s t d l i b . h >
^
mathTable.c:1:3: error: stray ‘#’ in program
▒▒# i n c l u d e < s t d l i b . h >
^
mathTable.c:1:4: warning: null character(s) ignored
▒▒# i n c l u d e < s t d l i b . h >
^
mathTable.c:1:6: warning: null character(s) ignored
▒▒# i n c l u d e < s t d l i b . h >
^
mathTable.c:1:5: error: unknown type name ‘i’
▒▒# i n c l u d e < s t d l i b . h >
^
...
...
...
mathTable.c:73:21: warning: null character(s) ignored
mathTable.c:73:25: warning: null character(s) ignored
mathTable.c:73:27: warning: null character(s) ignored
mathTable.c:74:1: warning: null character(s) ignored
mathTable.c:75:1: warning: null character(s) ignored
mathTable.c:75:3: warning: null character(s) ignored
mathTable.c:76:1: warning: null character(s) ignored
mathTable.c:77:1: warning: null character(s) ignored
mathTable.c:78:1: warning: null character(s) ignored
mathTable.c:79:1: warning: null character(s) ignored
make: *** [<builtin>: mathTable.o] Error 1
我开始学习C,所以我不确定是什么原因造成的。看起来很奇怪。也许与Linux有关?因为我不处理跨平台(因为我认为我不需要这样做)。
答案 0 :(得分:8)
这可能是因为您的文件具有Windows UTF-16格式。也许它包含您的母语字符串或注释。 Visual C ++编译器可以理解这一点,但是GCC(Mingw)不能。以无标记的UTF-8格式保存文件。
答案 1 :(得分:7)
这不是GNU Make错误。
编译器抱怨您的源文件编码错误。您需要在gcc
编译器中使用ASCII或UTF-8。
或尝试使用-finput-charset=UTF-16
编译器选项。