我是Linux操作系统的新手,我正试图编译一个简单的C程序。我用文本编辑器写的
#include<stdio.h>
void main() {
printf("Hello!");
}
我输入了gcc -o main main.c
出现以下问题:
main.c:1:1: error: stray '\377' in program
# i n c l u d e < s t d i o . h >
main.c:1:2: error: stray '\376' in program
每当我运行C或C++程序时都会发生这种情况。
3条答案
按热度按时间q9rjltbz1#
\377
和\376
是构成值0xFEFF
,(UTF-16字节顺序标记)的字节的八进制表示。你的编译器并不期望你的源代码中有这些字符。您需要将源文件的编码更改为UTF-8或ASCII。考虑到现有的文本编辑器的数量以及您问题中缺乏这些信息,我无法列出如何做到这一点的所有可能性。
您可以在
bash
shell中执行以下操作:这将创建一个名为“program.c”的文件,其内容为“// File content here”,使用UTF-8格式。
dsf9zpds2#
您的文本编辑器正在以错误的字符编码保存程序。将其保存为ASCII纯文本,然后重试。
cetgtptt3#
在编辑器中,您已经选择使用UTF-16 LE字符编码(大概)保存文本文件。
任何读取文本文件的程序都必须知道文本文件的字符编码。它可以接受一个文档化的字符编码(仅或默认)和/或允许您告诉它您使用的是哪一个。
这可能行得通
但是因为你有包含文件,包含文件必须使用相同的字符编码。在我的系统上,它们使用UTF-8(并包含©,这很好,因为gcc阻塞了字节,让我知道我搞砸了)。
注意:用UTF-16保存C源文件(或大多数文本文件)并不常见。UTF-8对于所有类型的文本文件都很常见。(ASCII也不是很常见。您可能在许多文本编辑器中找不到它作为一个选项。从历史上看,MS-DOS不支持它,Windows很晚才得到它,只是为了完整起见。