Spec-Zone.ru › GCC 14 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-14.2.0/cpp/Overview.html

Spec-Zone.ru

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