2008-10-29 3 views
13

C++을 사용하여 현재 메서드의 이름을 가져 오는 (표준화 된) 방법이 있습니까?C++에서 현재 메서드 이름 가져 오기

GNU GCC를 사용하면 매크로 __FUNCTION____PRETTY_FUNCTION__ (밑줄 2 개로 묶음)을 사용하여이 작업을 수행 할 수 있지만 물론 이식 할 수 없습니다. 표준 C++에서이 작업을 수행하는 방법 또는 이식성을 높이는 방법이 있습니까?

+0

당신이 ... – Roddy

+0

그들을 엉망으로 가격 인하를 방지하기 위해 백 슬래시를 사용하여 밑줄을 탈출 또는 "코드"버튼에서을 클릭하여 수 에디터. 내가 편집 할 때했던 것. –

+0

['BOOST_CURRENT_FUNCTION']을 사용합니다 (http://www.boost.org/doc/libs/1_36_0/libs/utility/current_function.html) – fizzer

답변

26

__func__ 식별자는 C99 표준의 일부이며 C++ 0x 초안에 있습니다. 다음은 각 기능 체의 바로 시작에서 것처럼

식별자 __func__ 내재적 컴파일러에 의해 선언된다 function-name는 컴파일러에 의해 자동으로 제공 구현 정의 문자열

static const char __func__[] = "function-name"; 

.

이러한 표준에 대한 지원이 제공 될 때까지 (또는 더 널리 사용 가능할 때까지) 컴파일러 관련 덩어리가 붙어 있습니다.

0

아니요, C++ 표준에서 지원되지 않습니다.

0

"인트로 스펙 션 (introspection)"이라고하며, C++ 표준에는 그러한 것이 없습니다. 당신은 외부 라이브러리를 사용해야한다 (나는 그것을 어떻게 든 지원한다고 생각한다). 그러나 그것을 사용하는 이유가 실제로 좋은 것인지 파악해보십시오.

+1

다른 언어에서는 단위 테스트를 생성하는 데 유용합니다 –