377和376流浪

时间:2018-11-30 19:05:24

标签: c

我是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 ++程序,就会发生这种情况

3 个答案:

答案 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仅在很晚才开始,并且仅出于完整性考虑。)