Spec-Zone.ru › GCC 9 CPP

1 Обзор

Препроцессор C, часто известный как cpp, — это макропроцессор, который автоматически используется компилятором C для преобразования вашей программы перед компиляцией. Он называется макропроцессором, потому что позволяет определять макросы, которые являются краткими аббревиатурами для более длинных конструкций.

Препроцессор C предназначен для использования только с исходным кодом C, C++ и Objective-C. В прошлом он использовался как общий текстовый процессор. Он будет «задыхаться» от входных данных, которые не подчиняются лексическим правилам C. Например, апострофы будут интерпретироваться как начало символьных констант и вызовут ошибки. Кроме того, вы не можете полагаться на сохранение им характеристик входных данных, которые не важны для языков семейства C. Если Makefile предварительно обрабатывается, все жесткие табуляции будут удалены, и Makefile не будет работать.

Тем не менее, вы часто можете обойтись использованием cpp для вещей, которые не являются C. Другие языки программирования семейства Алгол часто безопасны (Ada и т. д.). Также безопасен ассемблер, с осторожностью. Режим -traditional-cpp сохраняет больше пробелов и в противном случае более либерален. Многие проблемы можно избежать, написав комментарии в стиле C или C++ вместо комментариев родного языка и сохраняя макросы простыми.

Всякий раз, когда это возможно, следует использовать препроцессор, ориентированный на язык, на котором вы пишете. Современные версии ассемблера GNU имеют возможности макросов. Большинство языков программирования высокого уровня имеют собственный механизм условной компиляции и включения. Если все остальное не сработает, попробуйте истинный общий текстовый процессор, такой как GNU M4.

Препроцессоры C различаются в некоторых деталях. В этом руководстве рассматривается GNU препроцессор C, который обеспечивает небольшой набор функций стандарта ISO C. В своем стандартном режиме GNU препроцессор C не выполняет несколько действий, требуемых стандартом. Это функции, которые редко, если вообще когда-либо, используются и могут привести к неожиданным изменениям в значении программы, которая их не ожидает. Для получения строгого стандарта ISO C следует использовать опции -std=c90, -std=c99, -std=c11 или -std=c17 в зависимости от желаемой версии стандарта. Чтобы получить все обязательные диагностические сообщения, необходимо также использовать -pedantic. См. Вызов.

В этом руководстве описано поведение препроцессора ISO. Чтобы свести к минимуму ненужные различия, там, где поведение препроцессора ISO не конфликтует с традиционной семантикой, традиционный препроцессор должен вести себя одинаково. Различные существующие различия подробно описаны в разделе Традиционный режим.

Для ясности, если не указано иное, ссылки на ‘CPP’ в этом руководстве относятся к GNU CPP.

• Наборы символов:
• Первичная обработка:
• Токенизация:
• Язык препроцессинга:

Далее: Файлы заголовков, Предыдущий: Верх, Вверх: Верх [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/cpp/Overview.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API