Вопрос

В чем смысл этого #line в C язык?Где бы это было использовано?

Это было полезно?

Решение

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

Это может показаться странным, но препроцессор просто вставляет файлы заголовков, в которые вы указываете свои включения, и компилятор работает со всем этим (все файлы заголовков объединены вместе с вашим исходным кодом), вы можете проверить результат этапа препроцессора, если используете gcc с gcc -E myfile.c.Там вы заметите, что это добавляет #line директива всякий раз, когда вы включаете файлы, а также всякий раз, когда это уменьшает объем текста, передаваемого компилятору (например, большое количество комментариев может быть сокращено до одного #line директива, забегая вперед)

Он также используется другими программами, такими как bison / yacc, чтобы сообщить вам, что проблема (если есть проблема с компиляцией) связана с вашим файлом правил в определенной строке, чего компилятор в противном случае не смог бы сделать, поскольку bison / yacc генерирует c-файлы.

Другие советы

Это называется директива управления линией препроцессора.

Расширения обоих __FILE__ и __LINE__ изменяются, если #line используется директива.Это заставляет компилятор просматривать номер строки следующей исходной строки как указанный номер.

Его основное применение заключается в том, чтобы заставить компилятор предоставлять более значимые сообщения об ошибках.

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

Это - прагма ключевое слово:

"#линия позволяет изменять номер строки компилятора и (необязательно) имя файла, выводимого для ошибок и предупреждений.В этом примере показано, как сообщить о двух предупреждениях, связанных с номерами строк.Директива #line 200 заставляет указывать номер строки равным 200 (хотя по умолчанию используется #7), и до следующей директивы #line имя файла будет сообщаться как "Специальное".Директива #line default возвращает нумерацию строк к нумерации по умолчанию, которая подсчитывает строки, которые были перенумерованы предыдущей директивой."

Это позволяет вам изменить видимый номер строки файла.

Единственное применение, которое я могу придумать для этого, - привести номера строк в норму после длинной серии многострочных макросов.

использование является:

#line 42

В основном он используется для указания имен файлов и номеров строк исходного файла, из которого был создан файл C (будь то заголовок или реализация).Учитывая это, компилятор будет выдавать диагностические данные, которые указывают на исходный файл, а не на сгенерированный файл.

Препроцессоры также используют это, чтобы указать на включенные заголовки в предварительно обработанный файл, в котором они расширены.

# является строкой, вводящей символ в процессор c и c ++

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top