質問
「C」関数の引数の名前のために__func__
に似た標準サポートに何かをしていますか?
解決
あなたは、このための迅速かつ汚いソリューションは、このようなプリプロセッサマクロを作りたい場合は...
#define FUNCTION_HEADER(a) a { const char* __func__ = #a;
#define FUNCTION_FOOTER() }
...と(VS 2008でテスト済み)このようなあなたの関数のヘッダーとフッターのためにそれを使用します:
#include <windows.h>
#define FUNCTION_HEADER(a) a { const char* __func__ = #a;
#define FUNCTION_FOOTER() }
FUNCTION_HEADER( int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) )
MessageBoxA(0, __func__, __func__, MB_OK);
return 0;
FUNCTION_FOOTER()
これは、あなたがしたい正確にどのように動作するはずですが、それは醜いです。
他のヒント
いいえ、C99標準では、次のいます:
6.10.8事前定義されたマクロ名
次のマクロ名実装によって定義されなければならない。
__DATE__
__FILE__
__LINE__
__STDC__
__STDC_HOSTED__
__STDC_MB_MIGHT_NEQ_WC__
__STDC_VERSION__
__TIME__
次のマクロ名は、条件付きで実装によって定義される:
__STDC_IEC_559__
__STDC_IEC_559_COMPLEX__
__STDC_ISO_10646__
6.4.2.2定義済みの識別子
識別子
__func__
が暗黙的に翻訳者によって宣言されなければならないかのように、 直ちに各関数定義の開口ブレース以下、宣言
static const char __func__[] = "function-name";
)関数名が辞書的に包囲function.63の名前であり、登場
gccが/ <いくつかの拡張機能を追加しA>、私は他のコンパイラが行う想像してます。
所属していません StackOverflow