4

私はC++キーワード「override」を利用するC++プログラムをコンパイルしていました。

Visual Studio 2010で正常にコンパイルしましたが、g++でコンパイルする必要があります。g ++ 4.6のみが使用可能です(「オーバーライド」をサポートするにはg ++ 4.7が必要です)。

本当の解決策はg++4.7(現在行われている)をインストールすることですが、それは私に考えさせられました。キーワードがサポートされているかどうかを確認するためのコンパイル時チェックはありますか?

私は試した:

#ifndef override
    #define override
    #ifdef BUILD_WINDOWS
        #pragma message("The \"override\" keyword is not supported on this compiler!  Ignoring it!")
    #else
        #warning "The \"override\" keyword is not supported on this compiler!  Ignoring it!"
    #endif
#endif

「オーバーライド」はシンボルではないため、これは機能しません。

コンパイラのバージョンをチェックして、それがキーワードをサポートしているものの1つであるかどうかを確認するよりも、もっと一般的なことをしたいと思います。仮にあったとしても、これはどのように行うことができますか?

4

1 に答える 1

4

プログラム内から特定のキーワードをチェックする方法を知りません。私が提供できる最善の方法は、特定のコンパイラ/コンパイラ バージョンまたは言語/言語バージョンの特別な定義済みマクロをチェックすることです。

前者については、

#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))

後者については、

#if __cplusplus >= 201103L
于 2013-01-14T06:20:17.633 に答える