警告:#endif指令末尾的额外令牌

时间:2011-09-19 07:59:54

标签: c++

我正在使用VxWorks6.8 C ++编译器编译一个相当大的项目。我收到了警告

警告:#endif指令结束时的额外令牌

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

我收到了很多这些警告。

  
      
  1. 为什么我会收到这些警告并从C ++标准点开始   视图?
  2.   
  3. 编译器为此发出警告的理由是什么?
  4.   
  5. 解决此问题的最佳方法是什么?
  6.   

由于

4 个答案:

答案 0 :(得分:35)

应该是:

#endif // USE_IOSTREAM
#endif // WIN32

endif不接受任何争论。此类评论仅用于提高可读性

修改

你错过了最后关闭#endif // _OM_NO_IOSTREAM

答案 1 :(得分:14)

因为#endif

之后你没有任何东西

另外,你错过了一个结局。

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

答案 2 :(得分:0)

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

#endif之后不需要任何标识符。抑制这些警告的方法是删除它们。

答案 3 :(得分:0)

通常你不会把文字放在#endif后面。 (而且你错过了OM_NO_IOSTREAM的#endif)

http://msdn.microsoft.com/en-us/library/ew2hz0yd%28v=vs.80%29.aspx