메서드 이름 출력에 사용할 수 있는 매크로/키워드?
__FILE__
그리고.__LINE__
잘 알려져 있다.이 있습니다.__func__
C99부터요.
#include <iostream>
struct Foo {
void Do(){ std::cout << __func__ << std::endl; }
};
int main()
{
std::cout << __func__ << std::endl;
Foo foo; foo.Do();
return 0;
}
will 출력
main
Do
다음과 같은 메서드 이름을 출력하는 매크로/키워드가 있습니까?Foo::Do
?
Boost에는 BOOST_CURRENT_FUNTION이라고 하는 특별한 유틸리티 매크로가 있어 컴파일러 구현 간의 차이를 숨깁니다.
실장 후 컴파일러에 따라서는 다음과 같은 매크로가 몇 가지 알 수 있습니다.
__PRETTY_FUNCTION__
-- GCC, MetroWerks, 디지털 Mars, ICC, MinGW__FUNCSIG__
-- MSVC__FUNCTION__
-- 인텔과 IBM__FUNC__
-- 볼랜드__func__
-- ANSI C99
- GCC에서는
__FUNCTION__
그리고.__PRETTY_FUNCTION__
. - MSVC에서는
__FUNCSIG__
그리고.__FUNCTION__
.
표준 C++에는 이러한 매크로가 없으며, 제가 살펴본 C++0x 표준 초안을 포함합니다.해석은 전처리 후에 하기 때문에 컴파일이 복잡하기 때문에 표준에는 아무것도 없다고 생각합니다.
그__func__
사용하고 있는 것은 비표준이지만, 컴파일러에서는 동작하고 있는 것 같습니다.
표준 C++에는 없음(및__func__
C++)의 일부가 아닙니다.그러나 구현에는 이러한 기능이 있을 수 있습니다.어떤 컴파일러를 사용하고 있습니까?
MS Visual Studio에서 지원되는 전체 목록은 "사전 정의된 매크로(C/C++)"를 참조하십시오.
이것은 도움이 될 수 있습니다.
http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html
#include"stdio.h"
#include"stdlib.h"
int main()
{
printf("line number is %d .. func name is %s, file name is %s",__LINE__,__PRETTY_FUNCTION__,__FILE__);
return 0;
}
gcc에서 라인 번호, 함수 이름 및 파일 이름을 인쇄하는 방법입니다.
언급URL : https://stackoverflow.com/questions/2192680/macro-keyword-which-can-be-used-to-print-out-method-name
'programing' 카테고리의 다른 글
중첩된 형식 - vue (0) | 2022.08.01 |
---|---|
디스크립터를 읽기 위한 논블로킹콜 (0) | 2022.08.01 |
Java 타이머와 Executor Service의 비교 (0) | 2022.08.01 |
C의 이 논리 AND 버전이 단락 동작을 나타내지 않는 이유는 무엇입니까? (0) | 2022.08.01 |
Vuejs 및 Vue.set(), 어레이 업데이트 (0) | 2022.08.01 |