C++을 사용하여 현재 메서드의 이름을 가져 오는 (표준화 된) 방법이 있습니까?C++에서 현재 메서드 이름 가져 오기
GNU GCC를 사용하면 매크로 __FUNCTION__
및 __PRETTY_FUNCTION__
(밑줄 2 개로 묶음)을 사용하여이 작업을 수행 할 수 있지만 물론 이식 할 수 없습니다. 표준 C++에서이 작업을 수행하는 방법 또는 이식성을 높이는 방법이 있습니까?
C++을 사용하여 현재 메서드의 이름을 가져 오는 (표준화 된) 방법이 있습니까?C++에서 현재 메서드 이름 가져 오기
GNU GCC를 사용하면 매크로 __FUNCTION__
및 __PRETTY_FUNCTION__
(밑줄 2 개로 묶음)을 사용하여이 작업을 수행 할 수 있지만 물론 이식 할 수 없습니다. 표준 C++에서이 작업을 수행하는 방법 또는 이식성을 높이는 방법이 있습니까?
__func__
식별자는 C99 표준의 일부이며 C++ 0x 초안에 있습니다. 다음은 각 기능 체의 바로 시작에서 것처럼
식별자 __func__
내재적 컴파일러에 의해 선언된다 function-name
는 컴파일러에 의해 자동으로 제공 구현 정의 문자열
static const char __func__[] = "function-name";
.
이러한 표준에 대한 지원이 제공 될 때까지 (또는 더 널리 사용 가능할 때까지) 컴파일러 관련 덩어리가 붙어 있습니다.
아니요, C++ 표준에서 지원되지 않습니다.
"인트로 스펙 션 (introspection)"이라고하며, C++ 표준에는 그러한 것이 없습니다. 당신은 외부 라이브러리를 사용해야한다 (나는 그것을 어떻게 든 지원한다고 생각한다). 그러나 그것을 사용하는 이유가 실제로 좋은 것인지 파악해보십시오.
다른 언어에서는 단위 테스트를 생성하는 데 유용합니다 –
아니요 ......하지만 일부 표준이 아닌 표준으로 끝납니다!
은 ANSI 표준 물건을 설명 http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx를 참조하고 포함 microsofs하는 기능
당신이 ... – Roddy
그들을 엉망으로 가격 인하를 방지하기 위해 백 슬래시를 사용하여 밑줄을 탈출 또는 "코드"버튼에서을 클릭하여 수 에디터. 내가 편집 할 때했던 것. –
['BOOST_CURRENT_FUNCTION']을 사용합니다 (http://www.boost.org/doc/libs/1_36_0/libs/utility/current_function.html) – fizzer