Function Names as Strings
2825 단어 function
GCC provides three magic variables that hold the name of the current function, as a string. The first of these is
__func__
, which is part of the C99 standard(old): The identifier
__func__
is implicitly declared by the translator as if, immediately following the opening brace of each function definition, the declaration static const char __func__[] = "function-name";
appeared, where function-name is the name of the lexically-enclosing function. This name is the unadorned name of the function.
__FUNCTION__
is another name for __func__
. GCC의 Older versions of GCC recognize only this name(GCC2.0 이상 버전에는 __func___가 없고 __FUNCTION__만 있으며 2.0 이하 버전 컴파일러는 __FUNCTION___를 모릅니다.However, it is not standardized. For maximum portability, we recommend you use__func__
, but provide a fallback definition with the preprocessor(GCC2.0)(이하 매크로를 통해 _func___를 사용하면 크로스 버전 특성을 제공할 수 있음): #if __STDC_VERSION__ < 199901L
# if __GNUC__ >= 2
# define __func__ __FUNCTION__
# else
# define __func__ "<unknown>"
# endif
#endif
In C,
__PRETTY_FUNCTION__
is yet another name for __func__
. However, in C++, __PRETTY_FUNCTION__
contains the type signature of the function as well as its bare name(C++에서 _PRETTY_FUNCTION__함수 서명 포함).For example, this program: extern "C" {
extern int printf (char *, ...);
}
class a {
public:
void sub (int i)
{
printf ("__FUNCTION__ = %s
", __FUNCTION__);
printf ("__PRETTY_FUNCTION__ = %s
", __PRETTY_FUNCTION__);
}
};
int
main (void)
{
a ax;
ax.sub (0);
return 0;
}
gives this output:
__FUNCTION__ = sub
__PRETTY_FUNCTION__ = void a::sub(int)
These identifiers are not preprocessor macros. In GCC 3.3 and earlier, in C only,
__FUNCTION__
and __PRETTY_FUNCTION__
were treated as string literals; they could be used to initialize char
arrays, and they could be concatenated with other string literals. GCC 3.4 and later treat them as variables, like __func__(GCC3.4 , 2 )
. In C++, __FUNCTION__
and __PRETTY_FUNCTION__
have always been variables. 참조: http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html#Function-Names
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백 함수를 Angular 하위 구성 요소에 전달이 예제는 구성 요소에 함수를 전달하는 것과 관련하여 최근에 직면한 문제를 다룰 것입니다. 국가 목록을 제공하는 콤보 상자 또는 테이블 구성 요소. 지금까지 모든 것이 구성 요소 자체에 캡슐화되었으며 백엔드에 대한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.