Spec-Zone.ru › GNU Fortran 11

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

Spec-Zone.ru

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