1

多くのC++11機能を使用しているプロジェクトがあり、C++03でコンパイルするためにこのトリックについて考えました。

#ifndef USE_CPP0X
#    define override
#endif

私の知る限り、C ++キーワードを定義することは禁じられていますが、これは合法ですか?

4

2 に答える 2

6

多少眉をひそめていますが、確かに可能です。より良い、そしてそれほど嫌われていないバリアントは、すべての大きな文字でマクロを定義することです。

#ifndef USE_CPP0x
#  define OVERRIDE
#else
#  define OVERRIDE override
#endif

OVERRIDE次に、必要な場所の代わりに使用することを忘れないoverrideでください。

于 2012-03-29T15:09:18.717 に答える
2

C ++ 11以降で「オーバーライド」を使用するという点でさらに明確になるのは、次のとおりです。

#if __cplusplus >= 201103L
#define OVERRIDE override
#else
#define OVERRIDE
#endif

値201103Lは、C++11で合意された標準です。古いコンパイラを使用していない限り、マクロ__cplusplusは必ず定義されます。

于 2017-08-01T00:53:23.880 に答える