Что означает #line
на языке C? Где он будет использоваться?
Какое значение #line на языке C?
Ответ 1
Он сообщает компилятору, откуда на самом деле появилась следующая строка. Обычно это только препроцессор C, который добавляет их, например, при включении файла, он сообщает компилятору (который в основном видит только один поток данных), который мы смотрим на другой файл.
Это может показаться странным, но препроцессор просто вставляет файлы заголовков, в которых вы указываете свои включенные, и компилятор работает над всем (все файлы заголовков, объединенные вместе с вашим исходным кодом), вы можете проверить результат препроцессора если используется gcc с gcc -E myfile.c
. Там вы заметите, что добавляет директиву #line
всякий раз, когда вы включаете файлы, а также всякий раз, когда это уменьшает количество текста, передаваемого компилятору (например, большое количество комментариев может быть сведено к одной директиве #line
, пропуская вперед)
Он также используется другими программами, такими как bison/yacc, чтобы сообщить вам, что проблема (если есть проблема с компиляцией) связана с вашим файлом правил на определенной строке, которую компилятор иначе не смог бы сделать, поскольку bison/yacc генерирует c файлы.
Ответ 2
Он называется директивой управления строкой препроцессора.
Расширения как __FILE__
, так и __LINE__
изменяются, если используется директива #line
.
Это заставляет компилятор просматривать номер строки следующей строки источника в указанном номере.
Его основное назначение - сделать компилятор более значимыми сообщениями об ошибках.
Подробное объяснение и пример использования можно найти в документации IBM.
Ответ 3
Это прагма:
" #line позволяет изменять номер строки компилятора и (опционально) выводить имя файла для ошибок и предупреждений. В этом примере показано, как сообщать о двух предупреждениях, связанных с номерами строк. #line 200 директива ограничивает номер строки 200 (хотя значение по умолчанию равно # 7), и до следующей директивы #line имя файла будет указано как" Специальное". Директива по умолчанию #line возвращает нумерацию строк по умолчанию, которая рассчитывается строки, перенумерованные предыдущей директивой.
Ответ 4
Позволяет вам изменить видимый номер строки файла.
Единственное, что я могу придумать для этого, это сделать номера строк правильными после длинной серии многострочных макросов.
используется:
#line 42
Ответ 5
В основном он используется для предоставления имен файлов и номеров строк исходного файла, из которого был создан файл C (будь то заголовок или реализация). Учитывая это, компилятор будет испускать диагностику, которая намекает на исходный файл, а не на сгенерированный файл.
Препроцессоры также используют это, чтобы намекнуть на включенные заголовки в предварительно обработанном файле, который их расширил.
Ответ 6
# является строкой, наносимой символом процессору c и С++