IT이야기

Visual Studio에서 사전 처리 후 C/C++ 소스 파일을 보는 방법

cyworld 2022. 5. 24. 21:58
반응형

Visual Studio에서 사전 처리 후 C/C++ 소스 파일을 보는 방법

내가 전처리기 지시사항이 많은 소스 파일을 가지고 있다고 가정해보자.전처리가 끝난 후 어떻게 보이는지 알 수 있을까?

cl.exe마이크로소프트 Visual C++에 대한 명령줄 인터페이스에는 사전 처리된 파일을 출력하기 위한 세 가지 옵션이 있다(Visual C++에 대한 이전 응답의 불일치 확인):

#라라라라 하는 하면 된다/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/경로/to/include/dir를 이들 중 하나에 전달할 수 있다.

윈도우는 다른 포스터에 맡겨서 내가 전문가가 아니니까 답을 주겠다.

Solution Explorer의 파일을 마우스 오른쪽 버튼으로 누르십시오.구성 속성->C/C++->Preprocessor에서 "사전 처리된 파일 생성"을 찾고 있다.그런 다음 Solution Explorer에서 파일을 마우스 오른쪽 버튼으로 누르고 "Compile"을 선택하십시오.사전 처리된 파일은 출력 디렉토리(예: 릴리스, 디버그)에 확장자 .i(Steed의 코멘트 덕분에)로 생성된다.

일반적으로 전처리기 출력에 대한 후처리를 해야 하는데 그렇지 않으면 모든 매크로가 하나의 라이너로 확장되어 읽기 및 디버깅이 어렵다.C 코드의 경우 다음과 같은 것으로 충분하다.

gcc -E code.c | sed '/^\#/d' | indent -st -i2 > code-x.c

C++ 코드는 사실 훨씬 더 어렵다.GCC/g++의 경우Perl 스크립트가 유용하다는 것을 알았다.

해보다cl /EPMicrosoft의 C++ 컴파일러를 사용하는 경우

나는 마이크로소프트 컴파일러에 대해 아무것도 모르지만 GCC에서는 이것을 사용할 수 있다.

gcc -E -P -o result.c my_file.h

주석을 보려면 다음을 사용하십시오.

gcc -E -C -P -o result.c my_file.h

페이지에서 사용할 수 있는 추가 옵션.

Visual Studio에서 /P로 파일(또는 프로젝트)을 컴파일할 수 있다.

bk1e와 안드레아스 M.가 대답했듯이 컴파일러의 /P 옵션으로 인해 파일이 사전 처리된다.그러나 VS2005 및 Platform Builder(내장된 ARM 프로세서의 경우)를 사용하는 내 프로젝트에서 이 옵션을 활성화하기 위한 대화 상자(Jim B가 설명한 대로)에 옵션을 표시하지 않았다.

수동으로 CL을 실행하고 /P를 추가할 수 있었지만, 풀 빌드 도중 플랫폼 빌더가 보이지 않게 활성화하고 있는 적절한 명령줄 옵션을 모두 알지 못해 실패하였다.그래서 나는 그 모든 선택사항들을 알아야 했다.

내 해결책은 build.log 파일을 찾아 실행된 라인을 찾는 것이었습니다.

CL blah-blah-blah myfile.c

나는 이 줄을 클립보드에 복사했다.'블라블라블라' 부분에는 빌드옵션이 들어있었고, 규모가 컸다.

IDE에서 myfile.c를 마우스 오른쪽 단추로 클릭하고 "빌드 창 열기"를 선택한 다음 그 창에서 빌드 명령줄을 붙여 "/P"를 추가했다.

CL /P blah-blah-blah myfile.c

됐어, myfile.i 파일이 생성되었는데, 전처리기 출력이 들어있었어.

CPIP는 파이썬으로 작성된 새로운 C/C++ 전처리기다.사전 처리된 파일의 자세한 시각적 표현을 원하면 한 번 시도해 보십시오.

CPIP는 Python에서 구현된 C/C++ 프리프로세서다.대부분의 사전 처리자들은 전처리를 가능한 한 빨리 해야 하는 더러운 일로 여긴다.이것은 전처리 단계에서 미묘한 결함을 추적하는 것을 매우 어렵게 만들 수 있다. 왜냐하면 전처리자들은 가능한 한 싸게 결과를 얻기 위해 많은 유용한 정보를 버리기 때문이다.

전처리 과정을 정말로 이해하는 개발자는 거의 없으며, 많은 사람들에게 그것은 알려지지 않은 약간의 흑마술이다.CPIP는 이를 개선하고 CPIP가 파일 종속성, 매크로 사용 등에 대한 놀라운 시각적 정보를 생성할 수 있도록 사전 처리의 모든 세부사항을 기록함으로써 이를 개선하는 것을 목표로 한다.

CPIP는 cpp(또는 기타 확립된 사전 프로세서를 대체하도록 설계되지 않았으며, 대신 CPIP는 명확성과 이해를 처리 속도보다 더 중요하게 여긴다.

Windows OS에서 이 질문에 대한 간단한 한 줄의 대답은 DOS 프롬프트에서 다음 명령을 사용하여 사전 처리된 파일을 보는 것이다.

CL /P /C myprogram.c

이렇게 하면 myprogram.i라는 파일이 생성된다.그것을 열고 확장된 프리프로세서를 찾으십시오.

참조URL: https://stackoverflow.com/questions/277258/how-do-i-see-a-c-c-source-file-after-preprocessing-in-visual-studio

반응형