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

Spec-Zone.ru

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