2011-04-28 7 views
2

이 질문 : Is there a way to tell whether code is now being compiled as part of a PCH?이 문제를 생각하게 만듭니다.정의 된 C/C++ 컴파일러 목록

아마도 특정 컴파일러에 이 있습니까? C/C++ 컴파일러에서 현재 사용중인 정의를 덤프 할 수 있습니까?

편집 : 기술적으로 프로세서 전 문제라는 것을 알고 있지만 용어 컴파일러 내에 추가하겠습니다.

+0

nitpick하려면 : 그건 전처리 기 기능입니다. – delnan

+0

선행 처리기의 출력이 사용자가 원하는 것을 충족시키지 못하는 이유는 무엇입니까? – kirakun

+0

요즘 대부분의 컴프레서가 ISTM을 사용하기 때문에 사전 처리기가 포함되어 있습니다. 수년 동안 C++을 해본 적이 없지만 수동으로 프리 프로세서를 직접 실행하는 것을 기억하지는 않습니다. –

답변

1

예. GCC에서

g++ -E -dM <file> 

거의 모든 컴파일러에서 가능할 것입니다.

+0

나는 모든 컴파일러의 기능을 우연히 발견하지 못했다. 나는'gcc'가 그것을 가지고 있다는 것에 깊은 인상을 받았습니다. – wallyk

1

Boost Wave (명령 행 드라이버를 포함하는 선행 처리기 라이브러리)에는 매크로 확장을 추적하는 tracing capability이 포함되어 있습니다. 그것은 아마 당신이 요구하는 것보다 조금 더 있습니다 - 최종 결과를 표시하는 것이 아니라 본질적으로 매크로를 확장하는 모든 단계 (매우 복잡한 경우조차도)입니다.

clang preprocessor은 다소 유사합니다. 또한 기본적으로 커맨드 라인 드라이버를 포함하는 라이브러리입니다. 전처리 기는 macro_iterator 유형과 그 유형의 macro_begin/macro_end을 정의합니다. 그러면 선 처리기 기호 표를 걸어보고 원하는대로 기호를 인쇄 할 수 있습니다.