ANSI C 에는 미리 정의된 5개의 매크로가 있고, 항상 사용가능하며, #undef 가 안된다.

__DATE__   :  매크로가 치환되는 순간의 날짜 (문자열)
__TIME__   :  매크로가 치환되는 순간의 시간 (문자열)

__FILE__    :  매크로가 치환되는 순간의 소스파일의 경로와 이름 (문자열)

__LINE__    :  매크로가 치환되는 순간, 매크로의 LINE 번호 (정수형)
                   빈줄도 센다. 즉 코드 레벨에서 세는것이므로, 의미따윈 두지않고 빈라인이건 뭐건 그냥 카운팅한다.

__STDC__  :  Standard C 를 comply 하는가. (1 or 0)

(단, VC++ 쓰는 경우는 디폴트가 C++ 이라, __STDC__ 가 정의되어있지 않다. 즉, 그냥 변수로 인식하는데, 앞에서 선언을 해주지 않으면 오류가 난다.)

예.
#include<stdio.h>
#include<conio.h>

int main(void){
    printf("%s\n%s\n%s\n%d\n",__DATE__,__TIME__,__FILE__,__LINE__);
    getch();
    return 0;
}

실행결과는 다음과 같다.

Aug 19 2008
07:21:14
D:\C Language\test.c
5