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

Spec-Zone.ru

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