在C++03中定义重写合法吗
Is it legal to define override in C++03
我们有一个项目使用了许多C++11工具,我们考虑了这个技巧,使其在C++03上编译。
#ifndef USE_CPP0X
# define override
#endif
据我所知,定义C++关键字是被禁止的,那么这合法吗?
这有点令人反感,但肯定是可能的。一个更好且不那么令人反感的变体是用大写字母定义宏,类似
#ifndef USE_CPP0x
# define OVERRIDE
#else
# define OVERRIDE override
#endif
然后记得在需要的地方使用OVERRIDE
而不是override
。
在C++11及以上版本中使用"override"更明确的方法是:
#if __cplusplus >= 201103L
#define OVERRIDE override
#else
#define OVERRIDE
#endif
值201103L是为C++11商定的标准。除非您使用的是古老的编译器,否则宏__cplusplus肯定会被定义。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 不允许在类定义之外重写
- 将一个小的 C 定义重写为"normal" C++函数
- 重写自定义数组类的运算符/开始/结束
- 在不提供定义的情况下重写函数有什么意义?
- 如何重写 AcDbEntity::transformBy 以在移动或缩放时获取自定义实体转换
- 在C++中重写类型定义
- 使用函数定义和原型重写代码
- winapi - 我应该重写 CButton 还是 CWnd 以创建自定义控件
- 在C++03中定义重写合法吗
- C++中的重定义与重写
- c++重写已定义的变量
- 你能重写基类中定义的私有函数吗
- 如何为c++自定义迭代器重写*i++
- 提振.重写main时未定义的符号
- 在编译时自定义/重写符号名
- 为什么派生类必须重新定义重写的基类方法
- 重写由另一个ext定义的方法
- 将定义重写为c++
- Clang重写器:为无效程序添加结构定义