Spec-Zone.ru › GCC 13 CPP

1 Обзор

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

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

При этом вы часто можете использовать cpp для вещей, которые не являются C. Другие языки программирования семейства Algol часто безопасны (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-13.3.0/cpp/Overview.html

Spec-Zone.ru

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