make&makeinstall編譯報錯:程式中有遊離的‘/357’‘/273’‘/277’等
造成的原因主要有兩個:
1. 程式(*.c,*.h)中使用了中文的標點符號(全形),比如;,},+。
改成英文的標點半形符號就行了。
甚
至有時候空格也會出現類似錯誤,刪掉該空格 重新輸入。
vim裡面做類似替換還是很容易的。
如何看到報錯的符號?
od -c
hello.c > log.txt
在log中就能看到符號了
2.
如果替換成了英文標點還出錯的話,還報此錯誤,
那麼就是檔案存貯格式的問題了。
一般在windows下的檔案都存成ansi格式,為了在linux下能通用,建議儲存成UTF-8不帶BOM
編
碼格式,因為目前gcc和g++不支援UTF-8帶BOM編碼格式。
用 g++編譯的時候碰到UTF-8 BOM錯誤怎麼辦?
$ g++ -I../../include unit_test.cpp -o unit_test
unit_test.cpp:1: 錯誤: 程式中有遊離的'/357'
unit_test.cpp:1: 錯誤: 程式中有遊離的'/273'
unit_test.cpp:1: 錯誤: 程式中有遊離的'/277'
In file included from unit_test.cpp:63:
...
或在英文系統下:
$ g++
-I../../include unit_test.cpp -o unit_test
unit_test.cpp:1: error:
stray '/357' in program
unit_test.cpp:1: error: stray '/273' in
program
unit_test.cpp:1: error: stray '/277' in program
In file
included from unit_test.cpp:63:
...
如
何判斷檔案是否是使用UTF-8 BOM儲存的?
執行下面的命令:
$ cat
cpp/src/unit_test/unit_test.cpp |hd -n 10
00000000 ef bb bf 2f 2a 2a
2a 2a 2a 2a |.../******|
0000000a
轉來自:
http://www.cnblogs.com/lidp/archive/2009/06/17/1697886.html