Подтвердить что ты не робот

Какое значение #line на языке C?

Что означает #line на языке C? Где он будет использоваться?

4b9b3361

Ответ 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 и С++