web-dev-qa-db-ja.com

C ++プリプロセッサでg ++とMinGWを検出するにはどうすればよいですか?

私は次のようなことをしたい:

#ifdef GCC
#define GetFunctionName() string("My function name is ") + __PRETTY_FUNCTION__;
#endif

私はかなりPRETTY_FUNCTIONを使用したいので、これは私の知る限りgnuでのみサポートされているので、g ++とMinGW用にコンパイルしているかどうかを検出する必要があります。私が知る必要があるのは、以下のマイクロソフトで行ったように、コンパイラのプリプロセッサ定義だけだと思います。

#ifdef WIN32
#define LogFuncBegin() gLogger.FuncBegin( __FUNCTION__ );
#define LogFuncEndSuccess() gLogger.FuncEndSuccess( __FUNCTION__ );
#endif

C++プリプロセッサでg ++とMinGWを検出するにはどうすればよいですか?

37
EddieV223

以下を利用できます。

#ifdef __GNUC__
#ifdef __MINGW32__

追加のマクロについては、他のコンパイラマクロを示す このページ に興味があるかもしれません

46
Floris Velleman

GCCの場合:

#ifdef __GNUC__

MinGWの場合:

#ifdef __MINGW32__

x86_64-w64-mingw32-gccは両方を定義します__MINGW32__および__MINGW64__

29
sedavidw