Директива #line изменяет содержимое __LINE__ и __FILE__, которые являются зарезервированными идентификаторами в компиляторе. В первом из них содержится номер компилируемой в данный момент строки кода. А второй идентификатор — это строка, содержащая имя компилируемого исходного файла. В общем виде директива #line выглядит таким образом:
#line номер "имя_файла"
где номер — это положительное целое число, которое становится новым значением __LINE__, а необязательное имя_файла — это любой допустимый идентификатор файла, становящийся новым значением __FILE__. Директива #line в основном используется для отладки и специальных применений.
Например, следующий код определяет, что счетчик строк будет начинаться с 100, а оператор printf() выводит номер 102, потому что он расположен в третьей строке программы после оператора #line 100:
#include <stdio.h> #line 100 /* установить счетчик строк */ int main(void) /* строка 100 */ { /* строка 101 */ printf("%d\n",__LINE__); /* строка 102 */ return 0; }