2014-10-16 2 views
1

나는 glibc는 소스 코드에 다이빙이었다는 방법을 알고 여부

#ifdef XXX 

같은 처리기의 용도 꽤 많이 발견 및

#if YYY 

컴파일됩니다의 glibc의 정확한 동작을 알고 내 컴퓨터에서 실행하기 위해, 나는이 플래그가 참으로 정의 여부와 관계없이 알아야합니다. 현재 내가하고있는 일은 다음 코드를 어딘가에 삽입하고 컴파일하고 실행하는 것입니다.이 코드는 우아하고 효율적이지 않습니다.

#ifdef XXX 
printf("XXX defined"); 
#endif 

꽃밥 방법은 grep 전체 소스 트리에서 플래그 될 수도 있지만 나는이 방법은 매우 신뢰성이 발견했다. 때로는 어떤 #define XXX도 찾지 못했지만 아직 인쇄 된 것은 XXX defined입니다. (아무도 이유를 알려 줄 수 있습니까?)

따라서이 작업을 수행하는 가장 좋은 방법은 무엇인지 알고 싶습니다.

답변

2

gcc-g3gdb의 조합은 매크로를 확인하고 기능과 유사한 매크로를 매크로 확장하는 데 매우 유용하다는 것을 알게되었습니다. 자세한 내용은 GDB 매뉴얼의 man gcc12 C Preprocessor Macros을 참조하십시오.

더 "침략"방법으로 당신은 컴파일시 개별 매크로를 검사 #pragma message (또는 유사) 지시문을 넣을 수 :

인쇄 문자열을 컴파일에 컴파일러 메시지로. 메시지는 정보 용이며 컴파일 경고도 오류도 아닙니다.

-E 스위치가있어 사전 처리 된 번역 단위를 쉽게 볼 수 있습니다.

관련 문제