2013-12-17 52 views
0

我使用在Windows 8 textpad,安装为MinGW的编译C简单的C错误 - #include?

不知道为什么,这是造成麻烦:

#include <stdio.h> 

int main (void) 
{ 
    printf("To C, or not to C: that is the question.\n"); 
    return 0; 
} 

错误说

C:\Users\Admin\Desktop\C files\pun.c:1:2: warning: null character(s) ignored [enabled by default] 
# 
^
C:\Users\Admin\Desktop\C files\pun.c:1:3: error: invalid preprocessing directive #i 
# 
^

cc1.exe: out of memory allocating 838860800 bytes 

Tool completed with exit code 1 
+6

您的文件可能以BOM标题开头(如果是Windows下的“Unicode文本”,特别是)。确保它没有。 – zneak

+4

...并同样确保你没有保存为UTF-16。这可以解释一个明显的NULL字符在那里跳跃。 – Tommy

+2

是的,请确保将其保存为UTF-8或“ANSI文本”等。 –

回答

3

你已经基本肯定用一种Unicode编码保存文件,如UTF-16

这种分配16位的每个字符也就是说如果你HES-倾倒你的代码,你会看到类似这样的:

0000 - 23 00 69 00 6e 00 63 00 - 6c 00 75 00 64 00 5 00 - #.i.n.c.l.u.d.e. 

在开始。

编译器不知道理解UTF-16可能会抱怨在所有真正的字符中找到空字节,就像你的似乎已经完成一样。

要修复它,请以更传统的格式(如ASCII)保存文件或找到可处理它的编译器。前者可能是更简单的路径,只要你不需要需要所有那些非ASCII的Unicode字符。