2.3 Включение и настройка предобработки
Параметры, связанные с предобработчиком. Подробную информацию о предобработке в gfortran см. в разделе Предобработка и условные компиляции.
-cpp-nocpp-
Включить предобработку. Предобработник автоматически вызывается, если расширение файла равно .fpp, .FPP, .F, .FOR, .FTN, .F90, .F95, .F03 или .F08. Используйте этот параметр для ручного включения предобработки любого типа файла Fortran.
Для отключения предобработки файлов с любым из вышеперечисленных расширений используйте отрицательную форму: -nocpp.
Предобработник выполняется в традиционном режиме. Любые ограничения формата файла, особенно ограничения на длину строки, также применяются к результату предобработки, поэтому рекомендуется использовать параметры -ffree-line-length-none или -ffixed-line-length-none.
-dM-
Вместо обычного вывода сгенерировать список
'#define'директив для всех макросов, определённых во время выполнения предобработчика, включая предопределённые макросы. Это позволяет узнать, что предопределено в вашей версии предобработчика. Предполагая, что у вас нет файла foo.f90, командаtouch foo.f90; gfortran -cpp -E -dM foo.f90
отобразит все предопределённые макросы.
-dD-
Аналогично -dM, за исключением двух моментов: он не включает предопределённые макросы и выводит как
#defineдирективы, так и результат предобработки. Оба типа вывода направляются в стандартный выходной файл. -dN-
Аналогично -dD, но выводит только имена макросов, а не их расширения.
-dU-
Аналогично dD, за исключением того, что выводятся только те макросы, которые были развернуты или чьё определение проверялось в директивах предобработчика; вывод откладывается до использования или проверки макроса; и
'#undef'директивы также выводятся для макросов, проверенных, но неопределённых на данный момент. -dI-
Выводить
'#include'директивы помимо результата предобработки. -fworking-directory-
Включить генерацию маркеров строк в выходных данных предобработчика, которые позволят компилятору определить текущую рабочую директорию в момент предобработки. При включении этого параметра предобработник выведет после начального маркера строки ещё один маркер с текущей рабочей директорией, за которым следуют две косые черты. GCC будет использовать эту директорию, если она присутствует в входных данных предобработки, как директорию, указанную как текущая рабочая директория в некоторых форматах отладочной информации. Этот параметр неявно включён, если включена информация об отладке, но это можно отключить с помощью отрицательной формы -fno-working-directory. Если флаг -P присутствует в командной строке, этот параметр не имеет эффекта, так как
#lineдирективы не выводятся вообще. -idirafter dir-
Искать файлы заголовков в dir, но после того, как будут исчерпаны все директории, указанные с помощью -I, и стандартные системные директории. dir обрабатывается как системная директория заголовков. Если dir начинается с
=, то=будет заменено префиксом sysroot; см. --sysroot и -isysroot. -imultilib dir-
Использовать dir как подкаталог каталога, содержащего специфичные для целевой системы заголовки C++.
-iprefix prefix-
Указать prefix как префикс для последующих параметров -iwithprefix. Если prefix представляет собой директорию, то нужно включить завершающий
'/'. -isysroot dir-
Этот параметр аналогичен параметру --sysroot, но применяется только к файлам заголовков. Для получения дополнительной информации см. параметр --sysroot.
-iquote dir-
Искать dir только для файлов заголовков, запрошенных с помощью
#include "file"; они не ищутся для#include <file>, до всех каталогов, указанных с помощью -I, и до стандартных системных каталогов. Если dir начинается с=, то=будет заменено префиксом sysroot; см. --sysroot и -isysroot. -isystem dir-
Искать dir для файлов заголовков после всех каталогов, указанных параметром -I, но перед стандартными системными каталогами. Отметить его как системную директорию, чтобы он получил такое же специальное обращение, как и стандартные системные директории. Если dir начинается с
=, то=будет заменено префиксом sysroot; см. --sysroot и -isysroot. -nostdinc-
Не искать стандартные системные каталоги для файлов заголовков. Ищутся только каталоги, указанные вами с помощью параметров -I (и каталог текущего файла, если это уместно).
-undef-
Не предопределять какие-либо системные или специфичные для GCC макросы. Стандартные предопределенные макросы остаются определенными.
-Apredicate=answer-
Сделать утверждение с предикатом predicate и ответом answer. Этот формат предпочтительнее более старого формата -A predicate(answer), который все еще поддерживается, так как не использует специальные символы оболочки.
-A-predicate=answer-
Отменить утверждение с предикатом predicate и ответом answer.
-C-
Не удалять комментарии. Все комментарии передаются в выходной файл, за исключением комментариев в обработанных директивах, которые удаляются вместе с директивой.
Вы должны быть готовы к побочным эффектам при использовании -C; это заставляет предобработник обрабатывать комментарии как токены самостоятельно. Например, комментарии в начале строки, которая должна быть директивой, имеют эффект превращения этой строки в обычную строку исходного кода, так как первый токен в строке больше не является
'#'.Предупреждение: в настоящее время поддерживаются только комментарии в стиле C. Предобработник ещё не распознаёт комментарии в стиле Fortran.
-CC-
Не удалять комментарии, включая комментарии во время развёртывания макросов. Это аналогично -C, за исключением того, что комментарии, содержащиеся в макросах, также передаются в выходной файл, где происходит развёртывание макроса.
Помимо побочных эффектов параметра -C, параметр -CC заставляет все комментарии в стиле C++ внутри макроса преобразовываться в комментарии в стиле C. Это для предотвращения случайного комментирования остальной части строки исходного кода при последующем использовании макроса. Параметр -CC обычно используется для поддержки комментариев lint.
Предупреждение: в настоящее время поддерживаются только комментарии в стиле C и C++. Предобработник ещё не распознаёт комментарии в стиле Fortran.
-Dname-
Предопределить имя как макрос с определением
1. -Dname=definition-
Содержимое definition токенизируется и обрабатывается так, как если бы оно появилось во время фазы трансляции три в
'#define'директиве. В частности, определение будет обрезано вложенными символами новой строки.Если вы вызываете предобработник из оболочки или программы, подобной оболочке, вам может потребоваться использовать синтаксис цитирования оболочки для защиты таких символов, как пробелы, которые имеют значение в синтаксисе оболочки.
Если вы хотите определить функцию-макрос в командной строке, запишите её список аргументов с окружающими скобками перед знаком равенства (если таковой имеется). Скобки имеют значение для большинства оболочек, поэтому вам нужно процитировать опцию. В оболочках sh и csh,
-D'name(args...)=definition'работает.-D и -U параметры обрабатываются в том порядке, в котором они заданы в командной строке. Все параметры -imacros и -include обрабатываются после всех параметров -D и -U.
-H-
Выводить имя каждого используемого файла заголовка помимо других обычных действий. Каждое имя отступается, чтобы показать, насколько глубоко оно находится в стеке
'#include'. -P-
Запретить генерацию маркеров строк в выводе предобработчика. Это может быть полезно при запуске предобработчика на чём-то, что не является кодом C, и что будет отправлено программе, которая может быть сбита с толку маркерами строк.
-Uname-
Отменить любое предыдущее определение name, встроенное или заданное с помощью параметра -D.
Далее: Параметры ошибок и предупреждений, Предыдущее: Параметры диалекта Fortran, Вверх: Вызов GNU Fortran [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gfortran/Preprocessing-Options.html