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