문제
"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-name이 어휘에 밀려있는 함수의 이름 인 곳에서 나타납니다 .63)
GCC가 일부를 추가합니다 확장, 다른 컴파일러가 생각하는 것처럼.
제휴하지 않습니다 StackOverflow