>  기사  >  백엔드 개발  >  C에 클래스 이름 추출을 위한 __CLASS__ 매크로가 있습니까?

C에 클래스 이름 추출을 위한 __CLASS__ 매크로가 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-08 08:08:02524검색

Is There a __CLASS__ Macro for Class Name Extraction in C  ?

__CLASS__ 검색: 클래스 이름 추출을 위한 매크로

C는 현재 실행 중인 함수의 이름을 검색하는 FUNCTION 매크로를 제공합니다. 마찬가지로 개발자는 __CLASS__와 같은 클래스 이름을 얻기 위한 동등한 매크로가 있는지 궁금해하는 경우가 많습니다.

답은 C 언어 설계로 인한 대안을 모색하는 데 있습니다. 실행 가능한 옵션은 다음과 같습니다.

  1. typeid(*this).name(): 이 표현식은 typeid 연산자와 this 포인터를 사용하여 정규화된 클래스 이름을 생성합니다.
  2. PRETTY_FUNCTION: gcc에서 사용 가능합니다. 매크로는 클래스 이름을 포함한 전체 메소드 또는 정적 함수 이름을 제공합니다.
  3. 사용자 정의 매크로: 개발자는 사용자 정의 매크로를 정의하여 원하는 정보를 추출할 수 있습니다. 예:

    • 메서드 이름 추출의 경우:

      #define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)
      
      inline std::string methodName(const std::string& prettyFunction) {
          // Extract the method name from __PRETTY_FUNCTION__
          ...
      }
    • 클래스 이름 추출의 경우:

      #define __CLASS_NAME__ className(__PRETTY_FUNCTION__)
      
      inline std::string className(const std::string& prettyFunction) {
          // Extract the class name from __PRETTY_FUNCTION__
          ...
      }

이러한 사용자 정의 매크로는 CLASS의 기능이지만 클래스 컨텍스트 없이 메서드나 전역 함수와 같은 특수한 경우를 처리하려면 신중한 고려가 필요합니다.

위 내용은 C에 클래스 이름 추출을 위한 __CLASS__ 매크로가 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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