programing

메서드 이름 출력에 사용할 수 있는 매크로/키워드?

newsource 2022. 8. 1. 22:51

메서드 이름 출력에 사용할 수 있는 매크로/키워드?

__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