미리 정의된 매크로
미리 정의된 ANSI/ISO C99 및 Microsoft C++ 구현 전처리기 매크로를 나열합니다.
컴파일러는 사전 정의된 ANSI/ISO C99 C 전처리기 매크로를 인식하며 Microsoft C++ 구현은 그 외에 여러 매크로를 더 제공합니다. 이러한 전처리기 매크로는 인수를 사용하지 않으며 재정의될 수 없습니다. 이 문서에 나열된 미리 정의된 매크로 중 일부는 다중 값으로 정의됩니다.
ANSI 호환 미리 정의된 매크로
매크로 |
설명 |
---|---|
__DATE__ |
현재 소스 파일의 컴파일 날짜입니다. 날짜는 Mmm dd yyyy 형태의 문자열 리터럴입니다. 해당 월 이름 Mmm은 TIME.H에서 선언된 asctime 라이브러리 함수에 의해 생성된 날짜와 동일합니다. |
__FILE__ |
현재 소스 파일의 이름입니다. __FILE__은 문자열 리터럴로 확장됩니다. 파일의 전체 경로가 표시되도록 하려면 /FC(진단 소스 코드 파일의 전체 경로)를 사용합니다. |
__func__ |
바깥쪽 함수의 정규화되지 않은 있는 그대로의 이름을 문자 배열로 반환합니다.
|
__LINE__ |
현재 소스 파일의 줄 번호입니다. 줄 번호는 10진수 정수 리터럴입니다. #line 지시문을 사용하여 변경할 수 있습니다. |
__STDC__ |
ANSI/ISO C99 표준을 준수함을 나타냅니다. /Za 컴파일러 옵션이 지정되어 있고 C++ 코드를 컴파일하지 않는 경우에만 정수 리터럴 상수 1로 정의되고 그렇지 않으면 정의되지 않습니다. |
__TIME__ |
현재 소스 파일의 최근 컴파일 시간입니다. 시간은 hh:mm:ss 형식의 문자열 리터럴입니다. |
__TIMESTAMP__ |
Ddd Mmm Date hh:mm:ss yyyy(Ddd는 요일 이름(약식)이고 Date는 1에서 31 사이의 정수임) 형식의 문자열 리터럴로 표현된 현재 소스 파일의 마지막 수정 날짜 및 시간입니다. |
Microsoft 전용 미리 정의된 매크로
매크로 |
설명 |
---|---|
_ATL_VER |
정수 리터럴로 인코딩된 ATL 버전을 정의합니다. |
__AVX__ |
/arch:AVX 또는 /arch:AVX2를 지정할 경우 정의됩니다. |
__AVX2__ |
/arch:AVX2를 지정할 경우 정의됩니다. |
_CHAR_UNSIGNED |
기본 char 형식은 부호가 없습니다. /J를 지정할 경우 정의됩니다. |
__CLR_VER |
이 매크로는 응용 프로그램을 컴파일할 때 사용하는 공용 언어 런타임의 버전을 정의합니다. 반환되는 값은 다음과 같은 형식으로 인코딩된 정수 리터럴입니다. Mmmbbbbb 다음은 각 문자에 대한 설명입니다.
|
__cplusplus_cli |
/clr, /clr:pure 또는 /clr:safe를 사용하여 컴파일하는 경우 정의됩니다. __Cplusplus_cli의 값은 정수 리터럴 200406입니다. __cplusplus_cli는 변환 단위 전체에 적용됩니다.
|
__cplusplus_winrt |
/ZW 옵션을 사용하여 컴파일하는 경우 정의됩니다. __cplusplus_winrt의 값은 정수 리터럴 201009입니다. |
__COUNTER__ |
0에서 시작하여 소스 파일 또는 소스 파일에 포함된 헤더에서 사용될 때마다 1씩 증가하는 정수 리터럴로 확장합니다. 미리 컴파일된 헤더를 사용하면 __COUNTER__가 해당 상태를 기억합니다. 다음 예제에서는 __COUNTER__를 사용하여 형식이 동일한 세 가지 다른 개체에 고유 식별자를 할당합니다. 먼저, 다음 클래스 정의를 가정합니다. 생성자는 매개 변수로 정수를 사용합니다.
응용 프로그램은 main에서 exampleClass를 고유 식별자 매개 변수로 사용하여 __COUNTER__ 형식의 세 개체를 선언합니다.
|
__cplusplus |
C++ 프로그램에서만 사용되는 매크로입니다. |
_CPPRTTI |
/GR로 컴파일된 코드에서 사용되는 매크로입니다(런타임 형식 정보 사용). |
_CPPUNWIND |
/EH(예외 처리 모델) 플래그 중 하나를 사용하여 컴파일된 코드에서 사용되는 매크로입니다. |
_DEBUG |
|
_DLL |
/MD 또는 /MDd(다중 스레드 DLL)를 지정하는 경우 정의됩니다. |
__FUNCDNAME__ |
함수에만 유효합니다. 바깥쪽 함수의 데코레이팅된 이름을 문자열 리터럴로 정의합니다. __FUNCDNAME__은 /EP 또는 /P 컴파일러 옵션을 사용하는 경우 확장되지 않습니다. 다음 예제는 __FUNCDNAME__, __FUNCSIG__ 및 __FUNCTION__ 매크로를 사용하여 함수 정보를 표시합니다.
|
__FUNCSIG__ |
함수에만 유효합니다. 바깥쪽 함수의 시그니처를 문자열 리티럴로 정의합니다. __FUNCSIG__은 /EP 또는 /P 컴파일러 옵션을 사용하는 경우 확장되지 않습니다. 64비트 운영 체제에서 호출 규칙은 기본적으로 __cdecl입니다. 예제는 __FUNCDNAME__을 참조하세요. |
__FUNCTION__ |
함수에만 유효합니다. 바깥쪽 함수의 데코레이팅되지 않은 이름을 문자열 리터럴로 정의합니다. __FUNCTION__은 /EP 또는 /P 컴파일러 옵션을 사용하는 경우 확장되지 않습니다. 예제는 __FUNCDNAME__을 참조하세요. |
_INTEGRAL_MAX_BITS |
정수 계열 형식에 대한 최대 크기(비트 단위)를 정수 리터럴로 보고합니다.
|
_M_AMD64 |
X64 프로세서를 대상으로 하는 컴파일에 대해 정의됩니다. |
_M_ARM |
ARM 프로세서를 대상으로 하는 컴파일에 대해 정의됩니다. |
_M_CEE |
/clr(예: /clr:oldSyntax, /clr:safe) 형식을 사용하는 컴파일에서 사용되는 매크로입니다. |
_M_CEE_PURE |
/clr:pure를 사용하는 컴파일에서 사용되는 매크로입니다. |
_M_CEE_SAFE |
/clr:safe를 사용하는 컴파일에서 사용되는 매크로입니다. |
_M_IX86 |
x86 프로세서를 대상으로 하는 컴파일에 대해 정의됩니다. 이 매크로는 x64 프로세서에서 사용할 수 없습니다. |
_M_ARM_FP |
사용된 /arch 컴파일러 옵션을 나타내는 정수 리터럴 값으로 확장됩니다.
|
_M_IX86_FP |
사용된 /arch 컴파일러 옵션을 나타내는 정수 리터럴 값으로 확장됩니다.
|
_M_X64 |
X64 프로세서를 대상으로 하는 컴파일에 대해 정의됩니다. |
_MANAGED |
/clr을 지정하는 경우 1로 정의됩니다. |
_MFC_VER |
정수 리터럴로 인코딩된 MFC 버전을 정의합니다. |
_MSC_BUILD |
컴파일러 버전 번호의 수정 번호 구성 요소를 포함하는 정수 리터럴로 확장됩니다. 수정 번호는 마침표로 구분된 버전 번호의 네 번째 구성 요소입니다. 예를 들어, Visual C++ 컴파일러의 버전 번호가 15.00.20706.01인 경우 _MSC_BUILD 매크로를 실행하면 1이 나옵니다. |
_MSC_EXTENSIONS |
이 매크로는 /Ze 컴파일러 옵션(기본값)을 사용하여 컴파일하는 경우 정의됩니다. 정의된 경우 해당 값은 1입니다. |
_MSC_FULL_VER |
컴파일러 버전 번호의 주, 부 및 빌드 번호 구성 요소를 인코딩하는 정수 리터럴로 평가됩니다. 주 번호는 마침표로 구분된 버전 번호의 첫 번째 구성 요소이며, 부 번호는 두 번째 구성 요소, 빌드 번호는 세 번째 구성 요소입니다. 예를 들어, Visual C++ 컴파일러의 버전 번호가 15.00.20706.01인 경우 _MSC_FULL_VER 매크로를 실행하면 150020706이 나옵니다. 컴파일러의 버전 번호를 보려면 명령줄에 cl /?를 입력합니다. |
_MSC_VER |
컴파일러 버전 번호의 주 번호 및 부 번호 구성 요소를 인코딩하는 정수 리터럴로 평가됩니다. 주 번호는 마침표로 구분된 버전 번호의 첫 번째 구성 요소이며, 부 번호는 두 번째 구성 요소입니다. 예를 들어, Visual C++ 컴파일러의 버전 번호가 17.00.51106.1인 경우 _MSC_VER 매크로를 실행하면 1700이 나옵니다. 컴파일러의 버전 번호를 보려면 명령줄에 cl /?를 입력합니다. |
__MSVC_RUNTIME_CHECKS |
/RTC 컴파일러 옵션 중 하나를 지정하는 경우 정의됩니다. |
_MT |
/MD 또는 /MDd(다중 스레드 DLL) 또는 /MT 또는 /MTd(다중 스레드)를 지정하는 경우 정의됩니다. |
_NATIVE_WCHAR_T_DEFINED |
/Zc:wchar_t를 사용하는 경우 정의됩니다. |
_OPENMP |
/openmp로 컴파일할 때 정의되며, Visual C++를 통해 구현된 OpenMP 사양의 날짜를 나타내는 정수 리터럴을 계산합니다.
|
_VC_NODEFAULTLIB |
/Zl을 사용하는 경우 정의됩니다. 자세한 내용은 /Zl(기본 라이브러리 이름 생략)을 참조하십시오. |
_WCHAR_T_DEFINED |
/Zc:wchar_t를 사용하거나 wchar_t가 프로젝트에 포함된 시스템 헤더 파일에 정의되어 있는 경우 정의됩니다. |
_WIN32 |
Win32 및 Win64의 응용 프로그램에서 사용되는 매크로입니다. 항상 정의되어 있습니다. |
_WIN64 |
Win64의 응용 프로그램에서 사용되는 매크로입니다. |