> 백엔드 개발 > C++ > `__PRETTY_FUNCTION__`, `__FUNCTION__`, `__func__`의 차이점은 무엇인가요?

`__PRETTY_FUNCTION__`, `__FUNCTION__`, `__func__`의 차이점은 무엇인가요?

Patricia Arquette
풀어 주다: 2024-12-24 00:48:09
원래의
344명이 탐색했습니다.

What's the Difference Between `__PRETTY_FUNCTION__`, `__FUNCTION__`, and `__func__`?

차이점 이해: PRETTY_FUNCTION__, __FUNCTION__ 및 __func

프로그래밍에서 현재 함수에 대한 정보에 액세스하면 디버깅, 로깅 및 기타 목적에 유용합니다. C와 C에서 일반적으로 사용되는 세 가지 식별자(__PRETTY_FUNCTION__, __FUNCTION__ 및 __func__)가 이 기능을 제공합니다. 각각은 이해할 만한 고유한 특성을 가지고 있습니다.

__func__: C99의 표준 식별자

C99에 정의된 func는 암시적으로 선언된 식별자입니다. 사용되는 함수의 이름을 포함하는 문자 배열로 확장되는 식별자입니다. 선언된 식별자인 func는 전처리기 매크로와 다르게 동작합니다.

__FUNCTION__: 사전 표준 확장

다음과 같은 C 컴파일러에서 널리 지원됩니다. gcc 및 Visual C, FUNCTION은 엄밀히 말하면 C의 일부가 아닙니다. 기준. 일반적으로 __func__과 유사하게 동작하지만 컴파일러 간에 일부 불일치가 존재할 수 있습니다.

__PRETTY_FUNCTION__: GCC Extension

PRETTY_FUNCTION은 gcc에만 해당됩니다. __FUNCTION__과 유사한 확장명입니다. 그러나 C 함수의 경우 함수의 시그니처가 포함된 "예쁜" 이름을 반환합니다.

올바른 식별자 선택

사용할 식별자를 선택하는 것은 주로 다음에 따라 다릅니다. 지원 및 기능 요구 사항:

  • 표준 C99 준수가 필요한 경우 다음을 사용하세요. __func__.
  • __func__과 유사한 동작을 갖는 보다 이식성 있는 옵션이 필요한 경우 __FUNCTION__ 사용을 고려하세요.
  • 귀하의 코드가 gcc용으로 특별히 설계되었고 "예쁜" 함수 이름을 원한다면 다음을 사용하세요. __PRETTY_FUNCTION__.

특정 컴파일러 문서를 참조하는 것도 중요합니다. FUNCTION 및 __PRETTY_FUNCTION__과 같은 비표준 확장. 예를 들어 Visual C는 __FUNCSIG__와 같은 유사한 확장을 제공합니다.

위 내용은 `__PRETTY_FUNCTION__`, `__FUNCTION__`, `__func__`의 차이점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿