19 Preprocessing directives [cpp]

19.4 Line control [cpp.line]

Строковый литерал #line директивы, если он присутствует, должен быть символьным строковым литералом.

line number Текущей строки источника на единицу больше , чем число новой строки символов для чтения или введенной в translation phase 1 процессе обработки исходного файла для текущего маркера.

Директива предварительной обработки формы

# line digit-sequence new-line

заставляет реализацию вести себя так, как если бы следующая последовательность исходных строк начинается с исходной строки, номер строки которой указан в последовательности цифр (интерпретируется как десятичное целое число). Если в последовательности цифр указан ноль или число больше 2147483647, поведение не определено.

Директива предварительной обработки формы

# line digit-sequence " s-char-sequenceopt " new-line

аналогично устанавливает предполагаемый номер строки и изменяет предполагаемое имя исходного файла на содержимое литерала символьной строки.

Директива предварительной обработки формы

# line pp-tokens new-line

(что не соответствует ни одной из двух предыдущих форм) разрешено. Токены предварительной обработки после line директивы обрабатываются так же, как и в обычном тексте (каждый идентификатор, определенный в настоящее время как имя макроса, заменяется своим списком замены токенов предварительной обработки). Если директива, полученная после всех замен, не соответствует одной из двух предыдущих форм, поведение не определено; в противном случае результат обрабатывается соответствующим образом.