В языке С определены пять встроенных, предопределенных имен макрокоманд. Вот они:
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
В такой же последовательности о них здесь и пойдет речь.
Об именах макросов __LINE__ и __FILE__ рассказывалось, когда говорилось о директиве #line. Говоря кратко, они содержат соответственно номер строки и имя файла компилируемой программы.
В имени макроса __DATE__ содержится строка в виде месяц/день/год, то есть дата перевода исходного кода в объектный.
В имени макроса __TIME__ содержится время компиляции программы. Это время представлено строкой, имеющей вид час:минута:cекунда.
Если __STDC__ определено как 1, то тогда компилятор выполняет компиляцию в соответствии со стандартом С. А что касается С99, то в этом стандарт определены еще два имени макросов:
__STDC_HOSTED__
__STDC_VERSION__
__STDC_HOSTED__ равняется 1 для тех сред, в которых выполнение происходит под управлением операционной системы, и 0 — в противном случае. __STDC_VERSION__ будет равно как минимум 199901 и будет увеличиваться с каждой новой версией языка С. (В С99 могут быть определены и другие имена макросов, о них рассказывается в части II.)