中文下:
cc -c -I. test.c -o output/obj/test.o
test.c:1: 錯誤:程序中有游離的 \357’
test.c:1: 錯誤:程序中有游離的 \273’
test.c:1: 錯誤:程序中有游離的 \277’
英文下:
cc -c -I. test.c -o output/obj/test.o
test.c:1: error:stray \357’ in program
test.c:1: error:stray \273’ in program
test.c:1: error:stray \277’ in program
造成的原因主要有兩個:
1.源代碼(*.c / *.h)中使用了中文的標點符號(全角標點),如:逗號、分號、空格、加號、花括號。
2.源代碼文件為 UTF-8 BOM 編碼格式,如何判斷文件是否是使用了 UTF-8 BOM 編碼格式的呢?
$ cat test.c | hd -n 10
00000000 ef bb bf 2f 2a 0a 20 2a 20 e7 |.../*. * .|
0000000a
輸出的前三個碼是:ef bb bf,表示該文件是UTF-8 BOM格式。
解決辦法:
1.安裝 enca
$ sudo apt-get install enca
2.將所有 *.c 文件由 UTF-8 BOM 編碼格式轉成 UCS-2
$ enca -L zh_CN -x ucs-2 *.c
3.再查看 test.c 文件的編碼格式
$ cat test.c | hd -n 10
00000000 fe ff 00 2f 00 2a 00 0a 00 20 |.../.*... |
0000000a