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не выводятся совсем. -
-idirafterdir -
Искать файлы включаемой директории dir, но делать это после того, как будут исчерпаны все директории, указанные с помощью
-I, и стандартные системные директории. dir рассматривается как системная директория включаемых файлов. Если dir начинается с=, то=будет заменено префиксом sysroot; см.--sysrootи-isysroot. -
-imultilibdir - Использовать dir как поддиректорию, содержащую специфичные для целевой системы заголовки C++.
-
-iprefixprefix -
Указать prefix как префикс для последующих параметров
-iwithprefix. Если prefix представляет директорию, необходимо включить конечный'/'. -
-isysrootdir -
Этот параметр аналогичен параметру
--sysroot, но применяется только к файлам заголовков. Смотрите параметр--sysrootдля получения дополнительной информации. -
-iquotedir -
Искать dir только для файлов заголовков, запрошенных с
#include "file"; они не ищутся для#include <file>, прежде чем все директории, указанные с помощью-I, и стандартные системные директории. Если dir начинается с=, то=будет заменено префиксом sysroot; см.--sysrootи-isysroot. -
-isystemdir -
Искать 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