1. 程式人生 > >make&makeinstall編譯報錯:程式中有遊離的‘/357’‘/273’‘/277’等

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