c++ 警告:#endif指令末尾有多余的标记

huus2vyu  于 2023-02-01  发布在  其他
关注(0)|答案(4)|浏览(242)

我正在使用VxWorks6.8 C++编译器编译一个相当大的项目。我收到以下警告
警告:#endif指令末尾有多余的标记

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

我收到了很多这样的警告。
1.为什么我会收到这些警告,从C++标准的Angular 来看?
1.编译器对此发出警告的充分理由是什么?
1.解决这个问题的最佳方法是什么?
谢谢

dkqlctbz

dkqlctbz1#

#endif USE_IOSTREAM
#endif WIN32

应为:

#endif // USE_IOSTREAM
#endif // WIN32

endif不接受任何参数。放置这样的注解只是为了更好的可读性。
您还错过了最后关闭#endif // _OM_NO_IOSTREAM

q5iwbnjs

q5iwbnjs2#

因为#endif之后就没有了
而且你还少了一个endif。

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

3yhwsihp3#

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

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

46scxncf

46scxncf4#

通常情况下,您不会将文本放在#endif后面。(而且您缺少OM_NO_IOSTREAM的#endif)
http://msdn.microsoft.com/en-us/library/ew2hz0yd%28v=vs.80%29.aspx

相关问题