1 Обзор
Препроцессор C, часто известный как cpp, является процессором макросов, который автоматически используется компилятором C для преобразования вашей программы перед компиляцией. Он называется процессором макросов, потому что позволяет определять макросы, которые являются краткими сокращениями более длинных конструкций.
Препроцессор C предназначен для использования только с исходным кодом C, C++ и Objective-C. В прошлом он использовался как общий текстовый процессор. Он будет ошибаться при вводе, который не подчиняется лексическим правилам C. Например, апострофы будут интерпретироваться как начало символьных констант и вызывать ошибки. Кроме того, вы не можете полагаться на него для сохранения характеристик входных данных, которые не важны для языков семейства C. Если Makefile предварительно обрабатывается, все вкладки будут удалены, и Makefile не будет работать.
Сказав это, вы часто можете обойтись с использованием cpp для вещей, которые не являются C. Другие языки программирования семейства Algol часто безопасны (Pascal, Ada и т. д.). Также безопасен ассемблер, но с осторожностью. Режим -traditional-cpp сохраняет больше пробелов и в остальном более допускающий. Многие из проблем можно избежать, написав комментарии в стиле C или C++ вместо комментариев родного языка и сохраняя макросы простыми.
Всякий раз, когда это возможно, следует использовать препроцессор, ориентированный на язык, на котором вы пишете. Современные версии ассемблера GNU имеют возможности макросов. Большинство языков высокого уровня имеют собственные механизмы условной компиляции и включения. Если все остальное не поможет, попробуйте истинный общий текстовый процессор, такой как GNU M4.
Препроцессоры C отличаются некоторыми деталями. В данном руководстве рассматривается GNU препроцессор C, который предоставляет небольшой набор функций стандарта ISO C. В своем стандартном режиме GNU препроцессор C не выполняет несколько действий, требуемых стандартом. Это функции, которые редко, если вообще используются, и могут вызвать неожиданные изменения в значении программы, которая их не ожидает. Чтобы получить строгий стандарт ISO C, необходимо использовать опции -std=c90, -std=c99 или -std=c11 в зависимости от желаемой версии стандарта. Чтобы получить все обязательные диагностики, также необходимо использовать -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-6.5.0/cpp/Overview.html