>백엔드 개발 >C++ >C 및 C에서 함수 이름에 액세스하기 위해 `__func__`, `__FUNCTION__` 및 `__PRETTY_FUNCTION__` 중에서 선택하는 방법은 무엇입니까?

C 및 C에서 함수 이름에 액세스하기 위해 `__func__`, `__FUNCTION__` 및 `__PRETTY_FUNCTION__` 중에서 선택하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-13 15:35:11851검색

How to Choose Between `__func__`, `__FUNCTION__`, and `__PRETTY_FUNCTION__` for Accessing Function Names in C and C  ?

C 및 C의 함수 이름 매크로

C 및 C에서는 현재 함수의 이름에 액세스하는 데 여러 매크로를 사용할 수 있습니다. 이러한 매크로에는 __func__, __FUNCTION__ 및 __PRETTY_FUNCTION__이 포함됩니다.

func

C99에서 정의되고 C 11에 채택된 func은 암시적으로 선언된 문자 배열 변수입니다. 이는 둘러싸는 함수의 이름을 보유합니다. 꾸밈없는 함수명을 제공하는 간단하고 가벼운 옵션입니다.

FUNCTION

FUNCTION은 사전 표준입니다. 특정 컴파일러에서 지원되는 확장입니다. 그 동작은 func__과 유사하지만 공식 언어 표준의 일부는 아닙니다. 이식성의 이유로 가능한 경우 __func을 사용하는 것이 좋습니다.

PRETTY_FUNCTION

PRETTY_FUNCTION은 GCC-입니다. 다음을 포함하여 함수의 "예쁜" 이름을 제공하는 특정 확장 그 서명. 이전 버전과 달리 C에서는 인수 유형이 포함된 전체 기능 프로토타입을 얻는 것이 주로 유용합니다.

문서

func는 C99에 문서화되어 있습니다. 표준, 섹션 6.4.2.2/1. FUNCTION은 공식적으로 문서화되지 않았지만 일반적으로 컴파일러 관련 문서에 포함되어 있습니다. PRETTY_FUNCTION은 GCC 문서 페이지 "함수 이름을 문자열로"에 설명되어 있습니다.

각 매크로를 사용하는 시기

매크로 선택은 다음에 따라 다릅니다. 특정 요구 사항:

  • 간단한 기능 이름: func 또는 FUNCTION이면 충분합니다.
  • 서명이 있는 복잡한 함수 이름(C만 해당): PRETTY_FUNCTION
  • C99 이전 또는 C 11 이외의 호환성: FUNCTION(컴파일러에서 지원하는 경우)
  • 최대 이식성: func

위 내용은 C 및 C에서 함수 이름에 액세스하기 위해 `__func__`, `__FUNCTION__` 및 `__PRETTY_FUNCTION__` 중에서 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.