多くの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以降で「オーバーライド」を使用するという点でさらに明確になるのは、次のとおりです。
#if __cplusplus >= 201103L
#define OVERRIDE override
#else
#define OVERRIDE
#endif
値201103Lは、C++11で合意された標準です。古いコンパイラを使用していない限り、マクロ__cplusplusは必ず定義されます。