사전 처리기 매크로에 MSVC가 사용하는 가치를 파악하는 방법
-
20-09-2019 - |
문제
문자열을 정의하기 위해 MSVC6에서 A /D 컴파일러 옵션을 사용하려고하지만 주변의 이중 인용문을 사용하는 것이 이상한 것이 있습니다. 이 문제를 디버깅하기 위해서는 미리 처리기가 매크로가 확장되는 내 코드로 실제로 대체하는 값을 볼 수있게하는 것이 매우 도움이 될 것입니다. 내가 할 수있는 방법이 있습니까? "어셈블리 및 소스"가있는 목록 파일을 만들려고했지만 소스에는 원래 매크로 이름이 포함되어 있으며 ASM은 해당 라인에서 이해할 수없는 횡설수설입니다. 컴파일 시간에 거시적 값을 얻는 방법이 있습니까?
실패 (또는 더 유용한), /d 옵션이있는 문자열을 어떻게 지정합니까? 문자열 문자로 사용하기 때문에 주변의 이중 인용문으로 내 소스로 대체해야합니다.
해결책
cl.exe에 다음 옵션 중 하나를 시도하십시오.
/E preprocess to stdout
/P preprocess to file
Visual Studio 내에서 구축하는 경우 프로젝트 속성 대화 상자 중 하나에서 사용자 정의 명령 줄 옵션을 지정할 수 있습니다.
다른 팁
MSVC에는 모든 매크로 확장, 주석이 제거 된 댓글 등으로 전처리 된 소스 파일을 볼 수있는 컴파일러 플래그가 있습니다. - 컴파일 할 실제 코드 측면에서 전체 번역 장치. 전처리 된 출력은 거시적 확장과 관련하여 찾고있는 통찰력을 제공해야합니다. 더 많은 정보 여기.
컴파일러로 전달할 수있는 옵션이 있습니다 (/P
) 그리고 전처리 출력을 작성합니다 my_cpp_file.i
당신이 그것을 볼 수있는 곳.
제휴하지 않습니다 StackOverflow