我正在使用VxWorks6.8 C ++编译器编译一个相当大的项目。我收到了警告
警告:#endif指令结束时的额外令牌
#ifndef _OM_NO_IOSTREAM
#ifdef WIN32
#ifndef USE_IOSTREAM
#define USE_IOSTREAM
#endif USE_IOSTREAM
#endif WIN32
我收到了很多这些警告。
- 为什么我会收到这些警告并从C ++标准点开始 视图?
- 编译器为此发出警告的理由是什么?
- 解决此问题的最佳方法是什么?
醇>
由于
答案 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