Spec-Zone.ru › GCC 11 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, который предоставляет небольшой супернабор функций стандартного C. В своем стандартном режиме GNU препроцессор C не выполняет некоторые действия, требуемые стандартом. Это функции, которые редко, если вообще используются, и могут вызвать неожиданные изменения в значении программы, которая их не ожидает. Для получения строгого стандартного 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-11.4.0/cpp/Overview.html

Spec-Zone.ru

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