Строковый литерал #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 директивы обрабатываются так же, как и в обычном тексте (каждый идентификатор, определенный в настоящее время как имя макроса, заменяется своим списком замены токенов предварительной обработки). Если директива, полученная после всех замен, не соответствует одной из двух предыдущих форм, поведение не определено; в противном случае результат обрабатывается соответствующим образом.