我是Linux操作系统的新手,我正在尝试编译simpe C程序 ,我是使用文本编辑器编写的
#include<stdio.h>
void main(){
printf("Hello!");
}
我输入了gcc -o main main.c
出现以下问题
main.c:1:1:错误:程序中流浪了'\ 377' #i n c l u d e
main.c:1:2:错误:程序中流浪了'\ 376'
只要我运行c或c ++程序,就会发生这种情况
答案 0 :(得分:2)
\377
和\376
是构成UTF-16字节顺序标记值0xFEFF
,的字节的八进制表示。您的编译器不希望源代码中包含这些字符。
您需要将源文件的编码更改为UTF-8或ASCII。鉴于现有的文本编辑器数量众多,而且您的问题中缺少该信息,因此我无法列出所有可行的方法。
您可以在bash
shell中执行此操作:
cat > program.c
// File content here
^D
这将创建一个名为“ program.c”的文件,其内容为“ // File content here”,我将假定为ASCII。
答案 1 :(得分:0)
您的文本编辑器将程序保存为错误的字符编码。将其另存为ASCII纯文本,然后重试。
答案 2 :(得分:0)
没有文本,只有编码文本。
使用编辑器,您选择了使用UTF-16LE字符编码(大概)保存文本文件。
任何读取文本文件的程序都必须知道文本文件的字符编码。它可以接受一种记录的字符编码(仅或默认)和/或允许您告诉您使用了哪种字符编码。
这可能有效
gcc -finput-charset=UTF16-LE main.c
但是由于您具有包含文件,所以包含文件必须使用相同的字符编码。在我的系统上,它们使用UTF-8(并包含©,这很好,因为gcc为此阻塞了字节,让我知道我搞砸了)。
注意:用UTF-16保存C源文件(或大多数文本文件)不是很常见。 UTF-8在所有类型的文本文件中都很常见。(ASCII也不是很常见。在许多文本编辑器中您可能都找不到它作为选项。从历史上看,MS-DOS并不是支持它,而Windows仅在很晚才开始,并且仅出于完整性考虑。)