我想让我的代码在旧版 C++(使用“NULL”的 C++ 代码)和新的 C++11 标准(使用“nullptr”的 C++ 代码)上都可编译
我正在使用 GCC,但计划在完成最重要的事情时也为 VS 重新编译整个代码库。
我是否应该期望 GCC 和 VS 都会做类似的事情
#define NULL nullptr
还是我自己做更好(当然使用不同的名称,其中 MY_LIB 将被我的库后缀替换)?
#ifndef nullptr
#define MY_LIB_NULL NULL
#else
#define MY_LIB_NULL nullptr
#endif
我想要实现的是无论是否实现了 C++11 功能都可以编译的代码(而且由于我没有使用模板,所以它们很少)。
例如,关键字“override”和“final”已经完成。
MY_LIB_OVERRIDE //macro, defines to "override" if c++11 is present.
MY_LIB_FINAL //macro, defines to "final" if c++11 is present.
我问这个问题是因为我知道“nullptr”问题有点奇怪,所以也许只是做我已经为覆盖和最终所做的同样的事情,是错误的。需要对此发表意见。欢迎任何帮助。