2013-04-07 66 views
1

我不斷收到一個例外,當我試圖編譯在Unix服務器上我的C++代碼,但這些線路只是有:有關如何解決此錯誤的任何想法?

#ifndef WEIGHTED_GRAPH_H 
#endif 

和錯誤是:

In file included from Weighted_graph_tester.h:17, 
        from Weighted_graph_driver.cpp:18: 
    Weighted_graph.h:1: error: stray â\357â in program 
    Weighted_graph.h:1: error: stray â\273â in program 
    Weighted_graph.h:1: error: stray â\277â in program 
    Weighted_graph.h:1: error: stray â#â in program 
    In file included from Weighted_graph_tester.h:17, 
        from Weighted_graph_driver.cpp:18: 
    Weighted_graph.h:172:2: error: #endif without #if 
    Weighted_graph.h:1: error: âifndefâ does not name a type 

什麼想法?

+0

您的源代碼中可能有一些奇怪的字符。嘗試查看它在一個十六進制查看器... – 2013-04-07 19:44:14

回答

6

它告訴你,你有以下字節文件:

Oct: 357 273 277 
Hex: EF BB BF 

這些是UTF-8編碼文件byte order mark。很明顯,你的編譯器不支持UTF-8源文件,在它們的開頭有字節順序標記。事實上,在UTF-8文件中包含字節順序標記是沒有意義的,因爲任何單個單元只有一個字節大小。你應該確保你保存沒有它的文件。

從Unicode標準:

一個BOM的使用既不要求也不推薦用於UTF-8,但也可以在上下文中遇到,其中UTF-8的數據從使用一個BOM其他編碼形式變換或者將BOM用作UTF-8簽名。

+0

是這是它,我把代碼移動到一個新的文件,它解決了問題。謝謝:)只要它會讓我 – Dylan 2013-04-07 19:51:55

+0

@ user2036348謝謝。很高興幫助。 – 2013-04-07 19:53:20

+0

UTF-8 BOM確實將文件標識爲UTF-8。但是這不是一個足夠好的理由來使用它。它打破了UTF-8文件的許多有用特性,使連接文件或提取部分文件變得困難。 – 2013-04-07 20:09:11

相關問題