Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
01.05.2014
Размер:
206.19 Кб
Скачать

Опции препроцессора

Некоторые из перечисленных ниже опций имеют смысл только в сочетании с -E(которая отменяет все следующие за препроцессированием шаги обработки файла), поскольку вывод препроцессора в результате оказывается непригодным для компиляции.

-include файл (--include файл)

Ввести и обработать файлперед обработкой любого обычного входного файла. Т. е. вначале всегда компилируется содержимоефайла. Опции-D, -U всегда обрабатываются раньше, чем-include, независимо от того, в каком порядке они перечислены в командной строке. Опции-include, -imacros обрабатываются в том порядке, в каком они встречаются в командной строке.

-imacros файл(--imacros файл)

Ввести и обработать файл (не производя для него никакого вывода) перед обработкой любого обычного входного файла. Поскольку вывод при обработкефайлане производится, то единственный эффект этой опции заключается в том, чтобы сделать определенные вфайлемакросы доступными при обработке входных файлов.

Опции -D, -U всегда обрабатываются раньше, чем-imacros, независимо от того, в каком порядке они перечислены в командной строке. Опции-include,‑imacrosобрабатываются в том порядке, в каком они встречаются в командной строке.

-idirafter каталог(--include-directory-after каталог)

Добавить каталог ко второму списку поиска включаемых файлов. Каталоги второго списка поиска просматриваются в том случае, если включаемый файл не найден ни в одном из каталогов основного списка поиска включаемых файлов (т.е. списка, добавление к которому производится при помощи опции-I).

-iprefix префикс (--include-prefix префикс)

Задать префиксдля последующих опций-iwithprefix.

-iwithprefixкаталог

(--include-with-prefix,--include-with-prefix-after)

Добавить каталогко второму списку поиска включаемых файлов. Имя добавляемого каталога составляется путем конкатенации значенийпрефиксикаталог, гдепрефиксдолжен быть задан при помощи предшествующей опции-iprefix. Еслипрефиксне был задан, то подразумевается каталог, где находятся выполняемые программы обработки для данной установкиgcc.

-iwithprefixbeforeкаталог (--include-with-prefix-before каталог)

Добавить каталогк основному списку поиска включаемых файлов. Имя добавляемого каталога составляется путем конкатенации значенийпрефиксикаталог, гдепрефиксдолжен быть задан при помощи предшествующей опции‑iprefix. В отсутствие опции-iprefixдействует то же умолчание, что и для опции-iwithprefix.

-isystem каталог

Добавить каталогв начало второго списка поиска включаемых файлов, пометив его как системный каталог, так чтобы к нему применялись некоторые специальные правила поиска, установленные для системных каталогов.

-nostdinc (--no-standard-includes)

Не искать заголовочные файлы в стандартных системных каталогах. Искать только в каталогах, заданных при помощи опций -I(и в текущем каталоге, если возможно).

Сочетание опций -nostdinc и-Iпозволяет использовать для поиска включаемых файлов только явно заданные каталоги.

-undef

Отменить предопределения всех макросов, кроме стандартных. (Отменяются, в том числе флаги, задающие архитектуру машины.)

-E (--preprocess)

Выполнить только препроцессирование всех входных файлов, опознанных как файлы на языке Си. Результат вывести на стандартный вывод или в заданный (при помощи -o) выходной файл.

-C (--comments)

При препроцессировании не удалять комментарии. Используется в сочетании с опцией -E.

-P (--no-line-commands)

При препроцессировании не генерировать директивы #line. Используется в сочетании с опцией-E.

-M(--dependencies)

Вывести в качестве результата препроцессирования make-правила для объектных файлов. Для каждого исходного файла генерируетсяmake-правило, целью которого является соответствующий объектный файл, а в качестве зависимостей перечисляются все включаемые файлы, прямо или косвенно упоминаемый в исходном коде. Если правило длинное, то оно выводится в виде последовательности строк, где в конце промежуточных строк используется символ продолжения "\". Список правил выводится на стандартный вывод вместо препроцессированного текста исходных файлов (опция-Mподразумевает-E).

Еще один способ запросить генерацию make-правил — определение переменной окруженияDEPENDENCIES_OUTPUT(см. ниже гл. 13).

-MM (--user-dependencies)

То же,что -M, но в качестве зависимостей перечисляются только пользовательские включаемые файлы, заданные директивами вида#include"файл". Системные включаемые файлы, заданные директивами вида#include<файл>, в правилах не упоминаются.

-MD (--write-dependencies)

То же, что -M, но информация о зависимостях файлов выводится в файлы, имена которых образуются из исходных заменой расширения ".c" на ".d". Выводmake-правил в этом случае не отменяет нормальной компиляции файлов, как это имеет место при употреблении опции-M.

-MMD (--write-user-dependencies)

То же,что -MD, но в качестве зависимостей перечисляются только пользовательские включаемые файлы, заданные директивами вида#include "файл". Системные включаемые файлы, заданные директивами вида#include <файл>, в правилах не упоминаются.

-MG (--print-missing-file-dependencies)

Считать, что отсутствующие заголовочные файлы являются генерируемыми, и предполагать, что они должны находиться в том же каталоге, где расположен исходный файл. Опцию -MGможно употреблять только в сочетании с-Mили ‑MM. Опция-MGне поддерживается опциями-MDи-MMD.

-H (--trace-includes)

Печатать в дополнение к нормальному выводу имена всех используемых включаемых файлов.

вопрос(ответ) (--assertвопрос(ответ))

Определить ответнавопрос для условных директив препроцессора вида#ifвопрос(ответ). Опция-A-отменяет все стандартные утверждения (assertions), которые определяют тип целевой машины.

-Dмакрос (--define-macro макрос)

Определить макрос с именем макрос и значением1.

-D макрос=значение

Определить макрос с именем макроси значениемзначение. Все опции-Dв командной строке обрабатываются раньше всех опций-U.

-U макрос(--undefine-macro макрос)

Отменить определение макроса с именем макрос. Опции-Uобрабатываются после всех опций-D, но раньше, чем опции-includeи-imacros.

-dM

Вывести в качестве результата препроцессирования только список макроопределений, действительных на конец обработки исходных файлов. Используется в сочетании с опцией -E.

-dD

Оставлять макроопределения в выходном тексте, порождаемом препроцессором. Выводить их в тех местах, где они встречаются в исходном коде.

-dN

То же, что -dD, но аргументы и значения макросов не выводятся. В выходной текст попадают директивы вида#define ИМЯ.

-Wp,опция

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

Соседние файлы в папке Еще материалы