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 컴파일러 전용 C 컴파일러가 ANSI 표준을 준수하는 경우 정의됩니다. 이 매크로는 언어 레벨이 LANGLVL(*ANSI)로 설정된 경우에 정의됩니다.
__STDC_VERSION__
C 컴파일러 전용 long int 유형의 정수 상수로 정의됩니다. 이 매크로는 __STDC__도 정의되고 값이 199409L인 경우에만 정의됩니다. 이 매크로는 C++에 대해 정의되어 있지 않습니다.
__TIME__
소스 파일이 컴파일된 시간을 포함하는 문자열 리터럴로 정의됩니다. 시간 양식은 다음과 같습니다.
   "hh:mm:ss"
상황:
  • hh 시간을 표시합니다.
  • mm 분을 표시합니다.
  • ss 초를 나타냅니다.
__cplusplus
C++ 컴파일러 전용 C++ 프로그램을 컴파일할 때 정의되며, 컴파일러가 C++ 컴파일러임을 표시합니다. 이 매크로에는 후행 밑줄이 없습니다. 이 매크로는 C에 대해 정의되지 않았습니다.
참고:
  1. 사전 정의된 매크로 이름은 #define 또는 #undef 프리프로세서 지시문의 주제가 될 수 없습니다.
  2. 사전 정의된 ANSI/ISO 표준 매크로 이름은 이름 바로 앞에 있는 두 개의 밑줄 (__) 문자, 대문자로 된 이름 및 이름 바로 뒤에 있는 두 개의 밑줄 문자로 구성됩니다.
  3. 컴파일러가 소스 프로그램의 후속 행을 처리할 때 컴파일 중에 __LINE__ 의 값이 변경됩니다.
  4. __FILE____TIME__ 의 값은 컴파일러가 소스 프로그램의 일부인 #include 파일을 처리할 때 변경됩니다.
  5. C 컴파일러 전용 #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++ 언어 참조 를 참조하십시오.