/D(전처리기 정의)
소스 파일에 대한 전처리 기호를 정의합니다.
구문
/D
[ ]name[=
|#
[{ string | number }] ]
/D
[ ]"
name[=
|#
[{ string | number }] ]"
설명
이 기호를 #if
또는 #ifdef
와 함께 사용하여 조건에 따라 소스 코드를 컴파일할 수 있습니다. 기호 정의는 코드에서 다시 정의되거나 지시문에 의해 #undef
코드에 정의되지 않을 때까지 계속 적용됩니다.
/D
소스 코드 파일의 시작 부분에 있는 #define
지시문과 동일한 효과가 있습니다. 차이점은 명령줄에서 따옴표를 제거하고 지시문이 #define
이를 유지한다는 /D
것입니다. 기호와 기호 사이에 공백을 /D
둘 수 있습니다. 기호와 등호 사이에는 공백이 있거나 등호와 할당된 값 사이에 공백이 있을 수 없습니다.
기호와 관련된 값은 기본적으로 1입니다. 예를 들어 /D name
는 /D name=1
와 같습니다. 이 문서의 끝에 있는 예제에서는 정의 TEST
가 인쇄 1
되도록 표시됩니다.
기호 이름을 사용하여 /D name=
컴파일하면 연결된 값이 없습니다. 기호를 사용해 조건에 따라 코드를 컴파일할 수 있지만 그렇지 않은 경우 기호가 어떤 값으로도 계산되지 않습니다. 예제에서 사용하여 /DTEST=
컴파일하는 경우 오류가 발생합니다. 이 동작은 값을 사용하거나 사용하지 않을 때에도 #define
을 사용할 때의 동작과 비슷합니다.
이 /D
옵션은 함수와 유사한 매크로 정의를 지원하지 않습니다. 명령줄에 정의할 수 없는 정의를 삽입하려면 (강제 포함 파일 이름 지정) 컴파일러 옵션을 고려 /FI
합니다.
명령줄에서 여러 번 사용하여 /D
더 많은 기호를 정의할 수 있습니다. 동일한 기호가 두 번 이상 정의되면 마지막 정의가 사용됩니다.
이 명령은 TEST.c에서 DEBUG 기호를 정의합니다.
CL /DDEBUG TEST.C
이 명령은 TEST.c에 있는 모든 __far
키워드를 제거합니다.
CL /D __far= TEST.C
CL 환경 변수는 등호가 포함된 문자열로 설정할 수 없습니다. 환경 변수와 함께 CL
사용 /D
하려면 등호 대신 숫자 기호(#
)를 지정해야 합니다.
SET CL=/DTEST#0
명령 프롬프트에서 전처리 기호를 정의하면 컴파일러 구문 분석 규칙과 셸 구문 분석 규칙을 모두 수행하는 것이 좋습니다. 예를 들어 프로그램에서 백분율 기호 전처리 기호(%
)를 정의하려면 명령 프롬프트에서 두 개의 퍼센트 기호 문자(%%
)를 지정합니다. 하나만 지정하면 구문 분석 오류가 내보내집니다.
CL /DTEST=%% TEST.C
Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 컴파일러 및 빌드 속성 설정을 참조합니다.
구성 속성>C/C++>전처리기 속성 페이지를 선택합니다.
전처리기 정의 속성의 드롭다운 메뉴를 열고 편집을 선택합니다.
전처리기 정의 대화 상자에서 한 줄당 하나 이상의 정의를 추가, 수정 또는 삭제합니다. 확인을 선택하여 변경 내용을 저장합니다.
여기에 지정한 정의에 '/D' 옵션 접두사를 포함할 필요가 없습니다. 속성 페이지에서 정의는 세미콜론(
;
)으로 구분됩니다.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- PreprocessorDefinitions을(를) 참조하세요.
예시
// cpp_D_compiler_option.cpp
// compile with: cl /EHsc /DTEST cpp_D_compiler_option.cpp
#include <stdio.h>
int main( )
{
#ifdef TEST
printf_s("TEST defined %d\n", TEST);
#else
printf_s("TEST not defined\n");
#endif
}
TEST defined 1
참고 항목
MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문
/FI
(이름 강제 포함 파일)
/U
, /u
(정의되지 않은 기호)
#undef
지시문(C/C++)
#define
지시문(C/C++)