ANSI/ISO 표준 사전 정의된 매크로
ILE C/C++ 컴파일러는 ANSI/ISO 표준에 의해 정의된 다음 매크로를 인식합니다. 달리 지정하지 않는 한, 정의된 매크로의 값은 1입니다.
__DATE__
- 소스 파일이 컴파일된 날짜를 포함하는 문자열 리터럴입니다. 날짜 양식은 다음과 같습니다.
상황:"Mmm dd yyyy"
Mmm
는 축약 형식 (Jan
,Feb
,Mar
,Apr
,May
,Jun
,Jul
,Aug
,Sep
,Oct
,Nov
또는Dec
) 으로 월을 나타냅니다.dd
일을 나타냅니다. 일이 10미만인 경우 첫 번째d
는 공백 문자입니다.yyyy
는 연도를 나타냅니다.
__FILE__
- 소스 파일의 이름을 포함하는 문자열 리터럴로 정의됩니다.
__LINE__
- 현재 소스 행 번호를 나타내는 정수로 정의됩니다.
__STDC__
C 컴파일러가 ANSI 표준을 준수하는 경우 정의됩니다. 이 매크로는 언어 레벨이
LANGLVL(*ANSI)
로 설정된 경우에 정의됩니다.__STDC_VERSION__
long int 유형의 정수 상수로 정의됩니다. 이 매크로는 __STDC__도 정의되고 값이 199409L인 경우에만 정의됩니다. 이 매크로는 C++에 대해 정의되어 있지 않습니다.
__TIME__
- 소스 파일이 컴파일된 시간을 포함하는 문자열 리터럴로 정의됩니다. 시간 양식은 다음과 같습니다.
상황:"hh:mm:ss"
hh
시간을 표시합니다.mm
분을 표시합니다.ss
초를 나타냅니다.
__cplusplus
C++ 프로그램을 컴파일할 때 정의되며, 컴파일러가 C++ 컴파일러임을 표시합니다. 이 매크로에는 후행 밑줄이 없습니다. 이 매크로는 C에 대해 정의되지 않았습니다.
참고:
- 사전 정의된 매크로 이름은
#define
또는#undef
프리프로세서 지시문의 주제가 될 수 없습니다. - 사전 정의된 ANSI/ISO 표준 매크로 이름은 이름 바로 앞에 있는 두 개의 밑줄 (__) 문자, 대문자로 된 이름 및 이름 바로 뒤에 있는 두 개의 밑줄 문자로 구성됩니다.
- 컴파일러가 소스 프로그램의 후속 행을 처리할 때 컴파일 중에
__LINE__
의 값이 변경됩니다. __FILE__
및__TIME__
의 값은 컴파일러가 소스 프로그램의 일부인#include
파일을 처리할 때 변경됩니다.#line
프리프로세서 지시문을 사용하여__LINE__
및__FILE__
를 변경할 수도 있습니다.
예
다음
printf()
명령문은 사전 정의된 매크로 __LINE__
, __FILE__
, __TIME__
및 __DATE__
의 값을 표시하고 프로그램이 __STDC__
에 기반한 ANSI 표준을 준수하는지 여부를 나타내는 메시지를 인쇄합니다.#include <stdio.h>
#ifdef __STDC__
# define CONFORM "conforms"
#else
# define CONFORM "does not conform"
#endif
int main(void)
{
printf("Line %d of file %s has been executed\n", __LINE__, __FILE__);
printf("This file was compiled at %s on %s\n", __TIME__, __DATE__);
printf("This program %s to ANSI standards\n", CONFORM);
}
관련 정보
사전 정의된 매크로에 대한 추가 정보는 ILE C/C++ 언어 참조 를 참조하십시오.