2011-08-09 2 views
2

참고 : 나는 ++ 그래서 난에 대한 문을 주장 변수 __LINE____FILE__이있는 (영리) 행 번호와 파일 이름과 줄 것을 사용하는 사제 어설 션 매크로 우연히 배우는다른 숨겨진 변수 (매크로를 사용하여 미리 정의 된)는 g ++에서 액세스 할 수 있습니까?

버전 4.3.4을 g을 사용하고 있습니다 어디에서 호출되었는지 -이 경우에는 주장이 실패한 곳에서 호출됩니다. 이것들은 가지고있는 정보의 서사적 인 조각입니다!

나는 변수 __FUNCTION__이 당신에게 안에있는 함수 이름을 줄 것이라고 추측 할 수있었습니다 ... 놀라운 !! 그러나 assert.h가 작동 중일 때 함수에 대한 인수도 얻을 수 있습니다 (예 : function: int main(int, char**)). 현재 수행 할 수있는 것은 함수 이름을 얻는 것입니다 ...

일반적으로 말하면, 숨겨진 변수와 그들 모두의 전체 목록을 보려면? 난 당신이 일반적으로 __

+0

질문을 더 잘 반영하려면 제목을 업데이트해야합니다. MACRO in g ++ – YeenFei

답변

0

함수 인수를 얻는 한 __FUNCTION__ 대신 __PRETTY_FUNCTION__을 사용할 수 있습니다. 자세한 내용은 여기에서 볼 수 있습니다 : http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html

지금까지 당신이 여기에 주위를 사냥하면 미리 정의 된 매크로의 목록은, 당신이 그들을 많이 찾을 수 : 나는 목록 참조 것을 확실하게 말할 수 없다 http://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html#Predefined-Macros

위가 완료되었습니다. 이 말을하는 이유는 미리 정의 된 매크로 목록에서 __PRETTY_FUNCTION__을 찾을 수 없다는 것입니다. 왜 이런 말인가요?

1

말하기로 시작하는 변수 이름을 사용 안 왜 지금 이해 추측

PS, 당신은 아무것도 당신이에 대해 원하는 찾을 수 있습니다 C++의 경우 ISO/IEC 14882 : 2003, 2003 C++ 스탠다드 대담한. 나는 복사본이 없지만 날짜가 & 인 문자열로 확장되는 마법 매크로 __DATE____TIME__을 (§6.10.8에서) 나열한 C99 표준 (ISO/IEC 9899 : 1990)을 가지고 있습니다. 포함 소스 파일의 컴파일. 내가 찾을 수 GCC/G에 대한이 특별한 이름 ++의 유일한 목록입니다

EDIT를 (이전 표준 C++ 또는 컴파일 확장 또한, 대신 __FUNCTION__의, C99은 __func__ (§6.4.2.2)이있다?) __func__, __FUNCTION____PRETTY_FUNCTION__을 설명하는 GCC 설명서의 this section을 참조하십시오.

+0

필자는 최신 작업 보고서 (N3242)를 살펴본 결과 6 개만 목록으로 작성했습니다. 또한 구현에 따라 5 가지가 추가되었습니다. '__FUNCTION__'은 함수 인수 타입을 얻는 방법은 말할 것도없고, 전혀 찾을 수 없습니다. g ++ 4.3.4에 대한 전체 목록을 찾고 있습니다. – Jimmy

+0

그래서'__PRETTY_FUNCTION__ '을 (를) 찾기 위해 신용을 얻고 있습니까? 흠 ... 그게 옳은 것 같지 않은데 ... – Jimmy

관련 문제