2013-07-05 7 views
27

私のような何かをしたい:私はこれが唯一の限り私はそう、私は私がG ++とMinGWのためにコンパイルしていますかどうかを検出する必要が知っているように、GNUによってサポートされてかわいいPRETTY_FUNCTIONを使用したいのでC++プリプロセッサでg ++とMinGWを検出するにはどうしたらいいですか?

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

を、どうやってやるの?コンパイラのプリプロセッサの定義を知っておく必要があると私は推測しています。

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

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

答えて

36

あなたはを利用することができます:あなたは

+0

テストケースにMinGW-64が含まれていましたか? – jww

+0

@jww MinGW-64では32マクロも定義されますが、これも同様です。 –

+1

コンパイラマクロリストの最新バージョンは、[Prefor-defined Compiler Macros project at sourceforge](https://sourceforge.net/p/predef/wiki/Home/)にあります。 – rakslice

23

:MinGWのため

#ifdef __GNUC__ 

#ifdef __MINGW32__ 

x86_64の-W64-MINGW32-GCCは__MINGW32____MINGW64__の両方を定義します。

+2

他のコンパイラマクロを示しているthis pageに興味があるかもしれない追加のマクロのため

#ifdef __GNUC__ #ifdef __MINGW32__ 

テストケースは、MinGWの-64が含まれていましたか? – jww

+2

この回答はMinGW-64より前に書かれています。しかし、私は '__MINGW32__'マクロも定義していると思います。だからまだ動作する必要があります – sedavidw

+0

これは問題のようなものです。私は[プロジェクトによって提供されるMinGW-64](http://www.mingw.org/)を見つけることができません....存在しない問題を解決する意味はありません.... – jww

関連する問題