警告:#endif指令末尾有多余的标记
warning: extra tokens at end of #endif directive
我正在使用VxWorks6.8 C++编译器编译一个相当大的项目。我收到以下警告
警告:#endif指令末尾有额外的令牌
#ifndef _OM_NO_IOSTREAM
#ifdef WIN32
#ifndef USE_IOSTREAM
#define USE_IOSTREAM
#endif USE_IOSTREAM
#endif WIN32
我收到了很多这样的警告。
- 为什么我会收到这些警告,以及从C++标准的角度来看视图
- 编译器对此发出警告的充分原因是什么
- 解决这个问题的最佳方法是什么
感谢
#endif USE_IOSTREAM
#endif WIN32
应为:
#endif // USE_IOSTREAM
#endif // WIN32
endif
不接受任何参数。放置这样的注释只是为了提高可读性。
您还错过了最后关闭#endif // _OM_NO_IOSTREAM
。
因为#endif
之后不能有任何东西
此外,您还缺少一个endif。
#ifndef _OM_NO_IOSTREAM
#ifdef WIN32
#ifndef USE_IOSTREAM
#define USE_IOSTREAM
#endif
#endif
#endif
#endif USE_IOSTREAM
#endif WIN32
// ^^^^^^^^^^^^ Compiler is warning about these extra tokens after endif directive.
在#endif
之后不需要任何标识符。抑制这些警告的方法是删除它们。
通常不将文本放在#endif后面。(您缺少OM_NO_IOSTREAM的#endif(
http://msdn.microsoft.com/en-us/library/ew2hz0yd%28v=vs.80%29.aspx
相关文章:
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- #if 如何工作?我误解了 #if~#endif 的形式吗?
- 为什么在C++使用常量函数时常量是多余的?
- 已经在 .obj 中定义,即使有 #ifndef #define #endif
- 如果你在函数中包含 const,是多余的吗?
- 变量上的"const constexpr"是多余的吗?
- 似乎多余的使用 cin 作为条件与 if,而
- std::make_move_iterator 自 C++17 的类模板参数推导以来是多余的吗?
- C++ 函数将多余的空条目保存到文件中
- 处理 MSVC 中宏中多余的括号
- 如果我的班级是字面的班级,那么将我的类的对象声明为constexpr是多余的
- 组装的C 似乎包含多余的说明
- Arm GNU编译器:通过多余的强制转换优化的三进制生成的程序集
- 包装二进制缓冲区 - 可能没有多余的移动/复制?
- 使用 linux epoll:epoll_ctl似乎有多余的参数?
- ARM霓虹灯优化-消除多余的负载
- 如何编写函数来替换 #ifdef 和 #endif 对
- 阵列初始化器中的多余元素
- 是STD :: Move多余的情况
- 警告:#endif指令末尾有多余的标记