Реферат: Препроцессор языка C.
4.3.1. Стандартные заранее определенные макросы
Стандартные заранее определенные макросы могут применяться вне
зависимости от используемой платформы или операционной системы на которой
функционирует GNU C. Их имена начинаются и заканчиваются двойным символом
подчеркивания. Все макросы в следующем списке до '__GNUC__' являются
стандартизированными ANSI C. Остальные макросы являются расширениями GNU C.
'__FILE__'
Этот макрос заменяется на имя текущего исходного файла в форме строковой
константы С. Возвращаемым именем является одно из указанных в директиве
'#include' или имя основного исходного файла.
'__LINE__'
Этот макрос заменяется на номер текущей строки в форме десятичной целой
константы. В то время как он называется заранее определенным макросом, его
значение меняется динамически.
Этот макрос и макрос '__FILE__' используются при генерировании сообщения
об ошибке для вывода несоответствия, определенного программой. Сообщение
может содержать номер строки исходного файла где была обнаружена ошибка.
Например,
fprintf (stderr, "Internal error: "
"negative string length "
"%d at %s, line %d.",
length, __FILE__, __LINE__);
Директива '#include' изменяет значения макросов '__FILE__' и '__LINE__'
на соответствующие исходному файлу. В конце этого файла, если это был
подключаемый файл, значения '__FILE__' и '__LINE__' становятся теми, какими
они были до директивы '#include' (только значение '__LINE__' увеличивается
на единицу, так как затем обрабатывается строка, следующая за директивой
'#include').
Значения '__FILE__' и '__LINE__' изменяются при использовании директивы