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-8.4.0/gfortran/Preprocessing-Options.html