2012-01-10 2 views
0

가능한 중복 : 나 자신이 안드로이드를위한 STL의 포트 디버깅 발견
Preprocessor output전 처리기 지시문을 처리하고 실제 전 처리기 출력을 제공하는 도구가 있습니까?

. 전처리기에 실제로 출력되는 코드를 결정하는 데 전 (10-100?) 전처리 지시문을 많이 사용합니다. #if#ifdef 블록이 많이 있습니다.

이 도구를 통해 실행할 수 있고 실제로 어떤 텍스트가 컴파일러로 전송되는지 보여주는 도구가 있습니까? 전처리 기의 출력을 볼 수 있습니까?

답변

2

GCC의 경우 전 처리기의 출력 만 표시하려면 gcc -E source.c을 사용하십시오.

와 동일합니다. 믿습니다.

다른 컴파일러의 경우 설명서를 참조하십시오. 이것은 분명히 문서화되어야한다.

+0

와우, 나는 이것을 놓친다 고 나는 믿을 수 없다! 감사. 한 가지 간단한 질문 : 출력을 읽을 때 '#'로 시작하지 않는 행만 컴파일러에 보내지는 것은 사실입니까? –

+0

@ 아담스 :별로. 나머지 지시문은 컴파일러에서 오류 메시지에 올바른 파일 이름과 행 번호 출력을 생성하는 데 여전히 필요합니다. –

1

이것은 정확히 Boost입니다. Wave이 (가) 생성되었습니다.

웨이브 C++ 프리 프로세서 라이브러리

는 표준 템플릿 라이브러리 (STL)의 잘 알려진 숙어와 잘 통합 인터페이스를 사용하는 간단한 뒤에 포장 의무적 C99/C++ 전처리 기능의 표준 준수 구현입니다.

0

거의 모든 C++ 컴파일러에는이 작업을 수행하기위한 명령 줄 스위치가 있습니다. g ++에서 -E (출력은 stdout에 쓰고, manpage 참조), VC++에 대해서는 /EP (출력은 stdout) 또는 /P (파일로 출력)입니다.

+0

VC++의 경우,/E와/EP도 있습니다. – ildjarn