2011-09-19 154 views
18

我正在編譯一個使用VxWorks6.8 C++編譯器的相當大的項目。在#endif指令警告:#endif指令結尾的額外令牌

#ifndef _OM_NO_IOSTREAM 
#ifdef WIN32 
#ifndef USE_IOSTREAM 
#define USE_IOSTREAM 
#endif USE_IOSTREAM 
#endif WIN32 

我收到了很多這些警告的結束額外的令牌:我收到以下警告

警告。

  1. 爲什麼我收到這些警告和C++標準 觀點的呢?
  2. 爲什麼編譯器會爲此發出警告?
  3. 解決這個問題的最佳方法是什麼?

感謝

回答

32

應該是:

#endif // USE_IOSTREAM 
#endif // WIN32 

endif不帶任何參數。這種評論僅放置了可讀性

編輯:

和你錯過在年底

+0

可以用elobrate爲編譯器拋出這個警告有什麼好的理由嗎?謝謝 – venkysmarty

+10

已經做到了.... –

0
#endif USE_IOSTREAM 
#endif WIN32 
    // ^^^^^^^^^^^^ Compiler is warning about these extra tokens after endif directive. 

關閉#endif // _OM_NO_IOSTREAM沒有必要#endif之後的任何標識符。抑制這些警告的方法是將其刪除。

11

因爲你不能有任何東西后#endif

此外,你缺少ENDIF。

#ifndef _OM_NO_IOSTREAM 
    #ifdef WIN32 
    #ifndef USE_IOSTREAM 
     #define USE_IOSTREAM 
    #endif 
    #endif 
#endif 
+0

+1。目前爲止只有正確的答案。 – Nawaz