:gcc 3.3 이상에서 __func__을 사용할 수 있습니까? (C++) 3.3 전, 나는 다음과 같은 매크로를 사용하는 MS 컴파일러와 GCC 버전
DEBUG_WARNING(...) printf(">WARNING: "__FUNCTION__"() " __VA_ARGS__);
사용 :
DEBUG_WARNING("someFunction returned %d", ret);
출력 :
>WARNING: Class::FunctionName() someFunction returned -1
그것의 매우 편리합니다 우리는 많은 시스템을 가지고 있으며, 모든 출력을 전송합니다. 출력을 적절하게 필터링 할 수있는 단일 행 매크로. 작은 코드, 큰 사용, 행복한 나를.
__FUNCTION__
(및 C++의 경우 __func__
) 정의가 변경되어 (표준 준수를 위해) 매크로가 작동하지 않게되었습니다.
저는 문자열을 직접 작성하는 함수를 사용하고 있지만 매크로가 마음에 들었습니다.
Gcc 3.3에서이 간단한 한 줄 매크로를 사용하는 쉬운 방법이 없습니까?
: D
:'의 printf ("> 경고 : % s의()"FMT는, 기능, VA_ARGS)'쉼표 나에 짓고 있어요 플랫폼에 필요합니다. 도와 주셔서 감사합니다! : D –
## 트릭에 대한 조언 주셔서 감사. 두통없이 완전히 매크로를 독립적으로 만들 수 있습니다. 이것은 나의 최종 매크로가 보이는 방법이다 : '#define DEBUG_WARNING (fmt, ...) printf ("WARNING % s()"fmt, __FUNCTION__, ## __VA_ARGS__), ' 이것은 GCC 4.1에서 정상적으로 컴파일된다. 1 및 다른 2 플랫폼에서 사용되는 Microsoft 컴파일러도 포함됩니다. –