Spec-Zone.ru › GNU Fortran 4

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
Предопределить name как макрос с определением 1.
-Dname=definition
Содержание definition токенизируется и обрабатывается так, как если бы оно появилось во время третьей фазы трансляции в директиве '#define'. В частности, определение будет усечено встроенными символами новой строки.

Если вы вызываете препроцессор из оболочки или программы, подобной оболочке, вам может потребоваться использовать синтаксис цитирования оболочки для защиты таких символов, как пробелы, которые имеют смысл в синтаксисе оболочки.

Если вы хотите определить макрос, похожий на функцию, в командной строке, напишите его список аргументов с окружающими скобками перед знаком равенства (если он есть). Скобки имеют значение для большинства оболочек, поэтому вам нужно будет привести параметр в кавычки. С sh и csh, -D'name(args...)=definition' работает.

Параметры -D и -U обрабатываются в порядке их указания в командной строке. Все параметры -imacros file и -include file обрабатываются после всех параметров -D и -U.

-H
Вывести имя каждого используемого файла заголовка, помимо других обычных действий. Каждое имя отступается, чтобы показать, насколько глубоко оно находится в стеке '#include'.
-P
Запретить генерацию маркеров строк в выводе препроцессора. Это может быть полезно при запуске препроцессора на чём-то, что не является кодом C, и что будет отправлено программе, которая может быть сбита с толку маркерами строк.
-Uname
Отменить любое предыдущее определение name, встроенное или предоставленное параметром -D.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.3/gfortran/Preprocessing-Options.html

Spec-Zone.ru

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