Spec-Zone.ru › GNU Fortran 7

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

Spec-Zone.ru

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