2009-08-27 6 views
2

MSVC6에서 문자열을 정의하기 위해/D 컴파일러 옵션을 사용하려고하지만 그 주위에 큰 따옴표를 사용하는 것이 이상합니다. 이 문제를 디버깅하려면 전 처리기가 실제로 매크로가 확장 된 코드로 대체되는 값을 확인하는 것이 매우 유용합니다. 내가 이것을 할 수있는 방법이 있습니까? "assembly and source"를 사용하여 Listing 파일을 만들려고했으나 소스에 원래 매크로 이름이 포함되어 있었고 ASM은 그 줄에서 이해할 수없는 횡설수설이었습니다. 컴파일 할 때 매크로 값을 가져 오는 방법이 있습니까?MSVC가 전 처리기 매크로에 어떤 값을 사용하는지 알아내는 방법

/D 옵션을 사용하여 문자열을 지정하려면 어떻게해야합니까? 문자열 리터럴로 사용하기 때문에 주위에 큰 따옴표로 대치해야합니다.

답변

3

CL.EXE에 다음 옵션 중 하나를 시도해보십시오

/E preprocess to stdout 
/P preprocess to file 

당신은 비주얼 스튜디오 내에서 작성하는 경우, 당신은 프로젝트 속성 대화 상자 중 하나에 사용자 지정 명령 줄 옵션을 지정할 수 있습니다.

+0

/P가 작업을 수행했습니다. 나는 그것이 왜 그렇게 어려운지 궁금하다. 또한 미래에 관심이있는 사람이라면/D 문자열의 따옴표를 백 슬래시로 이스케이프 처리 할 수있다 (시행 착오에서). – rmeador

1

MSVC에는 모든 매크로가 확장되고 주석이 제거 된 전처리 된 원본 파일을 볼 수있는 컴파일러 플래그가 있습니다. 컴파일 할 실제 코드의 관점에서 전체 번역 단위입니다. 사전 처리 된 출력은 매크로 확장과 관련하여 찾고있는 통찰력을 제공합니다. 더 많은 정보 here.

1

컴파일러 (/P)에 전달할 수있는 옵션이 있으며,이 옵션을 사용하면 전 처리기 출력을 my_cpp_file.i에 기록 할 수 있습니다.