전 처리기 지시문이 많은 소스 파일이 있다고 가정 해 봅시다. 전처리 기가 완료된 후 어떻게 보이는지 확인할 수 있습니까?
답변
cl.exe
Microsoft Visual C ++에 대한 명령 행 인터페이스 인에는 사전 처리 된 파일을 출력하기위한 세 가지 옵션이 있으므로 Visual C ++에 대한 이전 응답의 불일치가 있습니다.
/E
: stdout으로의 전처리 (GCC의 -E 옵션과 유사)/P
: 파일 전처리/EP
: #line 지시문없이 stdout으로 전처리
#line 지시문없이 파일을 사전 처리하려면 /P
및 /EP
옵션을 결합하십시오 .
답변
대부분의 컴파일러에는 전처리기를 실행할 수있는 옵션이 있습니다. 예를 들어 gcc는 -E를 제공합니다.
-E Stop after the preprocessing stage; do not run the compiler proper.
The output is in the form of preprocessed source code, which is sent
to the standard output.
따라서 다음을 실행할 수 있습니다.
gcc -E foo.c
이러한 옵션을 찾을 수 없으면 컴퓨터에서 C 전처리기를 찾을 수도 있습니다. 일반적으로 cpp라고하며 이미 경로에 있습니다. 다음과 같이 호출하십시오.
cpp foo.c
다른 디렉토리에서 포함해야하는 헤더가있는 경우 일반 컴파일에서와 같이 -I / path / to / include / dir을 이들 중 하나에 전달할 수 있습니다.
Windows의 경우 전문가가 아니기 때문에 다른 포스터에 남겨두고 답변을 제공하겠습니다.
답변
솔루션 탐색기에서 파일을 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하십시오. 구성 특성-> C / C ++-> 전 처리기에서 “전처리 된 파일 생성”이 찾고 있습니다. 그런 다음 솔루션 탐색기에서 파일을 마우스 오른쪽 버튼으로 클릭하고 “컴파일”을 선택하십시오. 사전 처리 된 파일은 출력 디렉토리 (예 : Release, Debug)에서 확장자가 .i 인 주석으로 작성됩니다 (의견이있는 Steed 덕분에).
답변
일반적으로 전 처리기의 출력에 대해 약간의 후 처리를 수행해야합니다. 그렇지 않으면 모든 매크로가 하나의 라이너로 확장되므로 읽기 및 디버깅이 어렵습니다. C 코드의 경우 다음과 같은 것으로 충분합니다.
gcc -E code.c | sed '/^\#/d' | indent -st -i2 > code-x.c
C ++ 코드의 경우 실제로 훨씬 더 어렵습니다. GCC / g ++의 경우이 Perl 스크립트가 유용하다는 것을 알았습니다 .
답변
Microsoft 컴파일러에 대해서는 아무것도 모르지만 GCC에서는 다음을 사용할 수 있습니다.
gcc -E -P -o result.c my_file.h
주석을 보려면 다음을 사용하십시오.
gcc -E -C -P -o result.c my_file.h
이 페이지 에서 더 많은 옵션을 사용할 수 있습니다 .
답변
cl /EP
Microsoft의 C ++ 컴파일러를 사용중인 경우 사용해보십시오 .
답변
Visual Studio에서는 / P를 사용하여 파일 (또는 프로젝트)을 컴파일 할 수 있습니다.