MIDL에 대한 C 전처리기 요구 사항
이 페이지는 Microsoft C/C++ 전처리기를 MIDL에서 사용하는 전처리기로 교체해야 하는 특정 이유가 있는 개발자 또는 사용자 지정된 전처리기 스위치를 지정해야 하는 개발자에게만 적용됩니다. MIDL 스위치 /cpp_cmd, /cpp_opt 및 /no_cpp 컴파일러의 기본 동작을 재정의하는 데 사용됩니다. 일반적으로 Microsoft C/C++ 전처리기를 교체하거나 사용자 지정된 전처리기 스위치를 지정할 이유가 없습니다.
MIDL 컴파일러는 IDL 파일을 초기 처리하는 동안 C 전처리기를 사용합니다. IDL 파일을 컴파일할 때 사용되는 빌드 환경은 기본 C/C++ 전처리기와 연결됩니다. 다른 전처리기를 사용하는 경우 MIDL 컴파일러 스위치 /cpp_cmd 기본 C/C++-전처리기 이름을 재정의할 수 있습니다.
midl /cpp_cmd preprocessor_name filename
-
preprocessor_name
-
MIDL에서 사용할 전처리기의 이름을 지정합니다. 이진 파일의 경로를 사용하여 지정할 수 있습니다. .exe 확장은 선택 사항입니다.
-
파일
-
IDL 파일의 이름을 지정합니다.
- MIDL 컴파일러는 전처리기가 다음 규칙을 준수해야 합니다.
- 입력 파일은 명령줄에서 마지막 인수로 지정됩니다.
- 전처리기는 출력을 표준 출력 디바이스인 stdout으로 리디렉션해야 합니다.
- 전처리기의 출력 스트림에는 더 나은 진단 메시지를 사용하도록 설정하기 위해 #line 지시문이 있습니다.
- 줄 지시문은 출력 스트림의 유일한 전처리기 지시문입니다.
MIDL은 생성된 전처리기가 컴파일러 메시지의 원본 위치를 정확히 찾아내는 데 필요한 줄 지시문의 발생을 제외하고 컴파일러의 입력 스트림에서 모든 전처리기 지시문을 제거했다고 가정합니다. Microsoft C/C++ 전처리기에서 다른 전처리기를 표시하거나 /cpp_opt 스위치를 사용하여 전처리기 옵션을 지정할 때 컴파일러의 입력 스트림에 줄 지시문을 배치하는 적절한 전처리기 옵션을 지정해야 합니다. 예를 들어 Microsoft C/C++ 전처리기에서는 /E 옵션을 사용해야 합니다.
midl /cpp_cmd cl.exe /cpp_opt "/E" file.idl
#line 지시문은 다음 형식 중 하나로 MIDL에서 허용됩니다.
#line digit-sequence "filename" new-line
# digit-sequence "filename" new-line
줄 지시문 및 기타 전처리기 지시문에 대한 전체 설명은 사용 중인 C 컴파일러에 대한 설명서를 참조하세요.
MIDL은 선 전처리기 지시문만 허용합니다. 따라서 /no_cpp 스위치를 사용하는 경우 입력 파일에 다른 전처리기 지시문이 없어야 하거나 MIDL을 호출하기 전에 입력 파일을 처리해야 합니다.
자세한 내용은 IDL 파일에서 #defines 처리를 참조하세요.