실행중인 function 명을 알려면?

하하의 이미지

int function_A ()
{

  if(a == 1)
          printf("function_A");

}

위 코드에서

function_A 를 스트링으로 박아 넣었는데

이런 방식 말고 __FILE__, __LINE__ 처럼

해당 function 이름을 찾아 내는 매크로는 없나요?

peccavi의 이미지

__func__ 혹은 __FUNCTION__ 아닌가요?

----
jai guru deva om...

kuaaan의 이미지

오홀~ 이런게 있었군요~~ ^^
좋은거 하나 배웠습니다.

----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------

cinsk의 이미지

언어에 따라 다릅니다.

C 언어인 경우 ISO C 표준(C99)에 의해, __func__을 제공합니다. 또 이 것은 매크로가 아닌 identifier입니다. 문자열 상수 이름 정도로 보시면 됩니다.
C FAQ 10.27 참고.

C++ 언어인 경우, 현재 함수 이름을 얻어내는 표준 방법은 없습니다.

GCC의 경우, __FUNCTION__이라는 identnfier를 제공합니다. 이는 C/C++ 상관없이 동작합니다. (C언어인 경우 __func__와 같습니다)

또 __PRETTY_FUNCTION__이라는 identifier도 제공하는데, C 언어에서는 __FUNCTION__과 같이 함수 이름을 알려주고, C++에서는 클래스 이름, 리턴 타입, 클래스 이름과 인자 리스트를 다 보여줍니다. 즉 함수 원형(prototype)을 보여줍니다.