従来の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」の質問は少し奇妙だとわかっているので、質問をしているので、オーバーライドとファイナルですでに行ったのと同じことをするのは間違っているかもしれません。それについての意見が必要です。どんな助けでも大歓迎です。