logo search
Подбельский Фомин_Программирование на языке СИ_

Препроцессорные обозначения строк.

Препроцессорные обозначения строк. Для нумерации строк можно использовать директиву

#line константа

которая указывает компилятору, что следующая ниже строка текста имеет номер, определяемый целой десятичной константой. Директива может одновременно изменять не только номер строки, но и имя файла:

#line константа "имя_файла"

Как пишут в литературе по языку Си [5], директиву #line можно "встретить" сравнительно редко, за исключением случая, когда текст программы на языке Си генерирует какой-то другой препроцессор.

Смысл директивы #line становится очевидным, если рассмотреть текст, который препроцессор формирует и передает на компиляцию. После препроцессорной обработки каждая строка имеет следующий вид:

имя_файла номер_строки текст_на_языке_Си

Например, пусть препроцессор получает для обработки файл "www.c" с таким текстом:

После препроцессора в файле с именем "www.i" будет получен следующий набор строк:

Обратите внимание на отсутствие в результирующем тексте препроцессорных директив и комментария. Соответствующие строки пусты, но включены в результирующий текст. Для них выделены порядковые номера (1 и 4). Следующая строка за директивой #line обозначена в соответствии со значением константы (23) и указанным именем файла "file.c".