0

ロギングマクロを整理するために、各関数定義の前にプロジェクトに次のプリプロセッサ(コード)ブロックがあります。

#ifdef FC_NAME
#undef FC_NAME
#endif

#define FC_NAME  "myFunctionName"

しかし、これ自体はちょっと雑然としているように見えます。

だから、私はこれをもっとシンプルに見えるものに置き換えることを考えて、これを試しました

#define REDEF_FC_NAME(funcName) #ifdef FC_NAME \
\                                 #undef FC_NAME \
\                               #endif \
\                               #define FC_NAME funcName \

しかし、これはマクロ内のマクロ定義を言うエラーを与えます。それで、同じ効果を達成する方法はありますか?

4

1 に答える 1

2

簡単な答えは、マクロではそれができないということです。

だが:

C ++では、すべての関数に事前定義された__func__変数があります。

GCCは、他の多くのコンパイラーと同じように、これをCの拡張機能として提供しています。Windowsでは、__FUNCTION__マクロがあるように見えます(http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.71).aspxを参照)。

于 2012-04-03T23:48:56.567 に答える