Spec-Zone.ru › GCC 4 CPP

12 Вызов

Чаще всего при использовании препроцессора C вам не нужно вызывать его явно: компилятор C сделает это автоматически. Однако препроцессор иногда бывает полезен сам по себе. Все опции, перечисленные здесь, также приемлемы для компилятора C и имеют то же значение, за исключением того, что компилятор C имеет другие правила для указания выходного файла.

Примечание: Независимо от того, используете ли вы препроцессор через gcc или cpp, сначала выполняется драйвер компилятора. Цель этой программы — перевести вашу команду в вызовы программ, которые выполняют фактическую работу. Их интерфейсы командной строки похожи, но не идентичны документированному интерфейсу и могут меняться без предварительного уведомления.

Препроцессор C ожидает два имени файлов в качестве аргументов, infile и outfile. Препроцессор считывает infile вместе с любыми другими файлами, которые он указывает с помощью ‘#include’. Весь вывод, сгенерированный объединенными входными файлами, записывается в outfile.

Либо infile, либо outfile может быть -, что как infile означает чтение со стандартного ввода, а как outfile означает запись в стандартный вывод. Кроме того, если какой-либо файл опущен, это означает то же самое, что и если - был указан для этого файла.

Если не указано иное или опция заканчивается на ‘=’, все опции, принимающие аргумент, могут иметь этот аргумент, расположенный либо непосредственно после опции, либо с пробелом между опцией и аргументом: -Ifoo и -I foo имеют одинаковый эффект.

Многие опции имеют многобуквенные имена; поэтому несколько однобуквенных опций не могут быть объединены: -dM сильно отличается от ‘-d -M’.

-D name
Определите name как макрос, с определением 1.
-D name=definition
Содержимое definition токенизируется и обрабатывается так, как если бы оно появилось во время третьей фазы трансляции в директиве ‘#define’. В частности, определение будет усечено символами новой строки.

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

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

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

-U name
Отменить любое предыдущее определение name, встроенное или заданное с помощью параметра -D.
-undef
Не определять системные или специфичные для GCC макросы. Стандартные предопределенные макросы остаются определенными. См. Стандартные предопределенные макросы.
-I dir
Добавить каталог dir в список каталогов, которые будут просматриваться при поиске заголовочных файлов. См. Путь поиска. Каталоги, указанные с помощью -I, просматриваются перед стандартными системными каталогами включения. Если каталог dir является стандартным системным каталогом включения, параметр игнорируется, чтобы гарантировать, что порядок поиска системных каталогов по умолчанию и специальное обращение со системными заголовками не нарушаются (см. Системные заголовки). Если dir начинается с =, тогда = будет заменён префиксом sysroot; см. --sysroot и -isysroot.
-o file
Записать вывод в file. Это то же самое, что и указание file в качестве второго аргумента, не являющегося параметром, для cpp. gcc имеет другое толкование второго аргумента, не являющегося параметром, поэтому вам необходимо использовать -o для указания выходного файла.
-Wall
Включает все необязательные предупреждения, которые желательны для обычного кода. В настоящее время это -Wcomment, -Wtrigraphs, -Wmultichar и предупреждение о преобразовании целых чисел, приводящем к изменению знака в выражениях #if. Обратите внимание, что многие предупреждения препроцессора включены по умолчанию и не имеют параметров для их управления.
-Wcomment
-Wcomments
Выдавать предупреждение всякий раз, когда последовательность начала комментария ‘/*’ появляется в комментарии ‘/*’, или всякий раз, когда обратный слэш-новая строка появляется в комментарии ‘//’. (Оба варианта имеют одинаковый эффект).
-Wtrigraphs
Большинство триграфов в комментариях не могут повлиять на значение программы. Однако триграф, который сформировал бы экранированную новую строку (‘??/’ в конце строки), может изменить, где начинается или заканчивается комментарий. Поэтому только триграфы, которые сформируют экранированные новые строки, порождают предупреждения внутри комментария.

Этот параметр подразумевается параметром -Wall. Если -Wall не задан, этот параметр всё ещё включен, если триграфы не включены. Чтобы получить преобразование триграфов без предупреждений, но получить другие предупреждения -Wall, используйте ‘-trigraphs -Wall -Wno-trigraphs’.

-Wtraditional
Выдавать предупреждения об определённых конструкциях, которые ведут себя по-разному в традиционном и ISO C. Также предупреждать о конструкциях ISO C, которые не имеют традиционного C-эквивалента, и о проблемных конструкциях, которых следует избегать. См. Традиционный режим.
-Wundef
Выдавать предупреждение всякий раз, когда встречается идентификатор, который не является макросом, в директиве ‘#if’, вне ‘defined’. Такие идентификаторы заменяются нулём.
-Wunused-macros
Выдавать предупреждения о макросах, определённых в основном файле, которые не используются. Макрос используется, если он расширяется или проверяется на существование хотя бы один раз. Препроцессор также выдаст предупреждение, если макрос не был использован к моменту его переопределения или удаления.

Встроенные макросы, макросы, определённые в командной строке, и макросы, определённые в файлах включения, не вызывают предупреждения.

Примечание: Если макрос фактически используется, но только в пропущенных условных блоках, то CPP сообщит об этом как об unused. Чтобы избежать предупреждения в таком случае, вы можете улучшить область действия определения макроса, например, поместив его в первый пропущенный блок. В качестве альтернативы вы можете предоставить поддельное использование, например:

#if defined the_macro_causing_the_warning
#endif
-Wendif-labels
Выдавать предупреждение всякий раз, когда ‘#else’ или ‘#endif’ следуют за текстом. Это обычно происходит в коде вида
#if FOO
...
#else FOO
...
#endif FOO

Второй и третий FOO должны быть в комментариях, но часто ими не являются в более старых программах. Это предупреждение включено по умолчанию.

-Werror
Превратить все предупреждения в жёсткие ошибки. Исходный код, который вызывает предупреждения, будет отклонен.
-Wsystem-headers
Выдавать предупреждения для кода в системных заголовках. Они обычно бесполезны для поиска ошибок в вашем собственном коде, поэтому подавляются. Если вы отвечаете за системную библиотеку, вы можете их увидеть.
-w
Подавить все предупреждения, включая те, которые GNU CPP выдаёт по умолчанию.
-pedantic
Выдавать все обязательные диагностики, перечисленные в стандарте C. Некоторые из них по умолчанию отсутствуют, так как они часто срабатывают на безобидном коде.
-pedantic-errors
Выдавать все обязательные диагностики и превращать все обязательные диагностики в ошибки. Это включает обязательные диагностики, которые GCC выдаёт без ‘-pedantic’, но обрабатывает как предупреждения.
-M
Вместо вывода результата предварительной обработки вывести правило, подходящее для make, описывающее зависимости основного исходного файла. Препроцессор выводит одно make правило, содержащее имя файла объекта для этого исходного файла, двоеточие и имена всех включённых файлов, включая файлы, полученные из -include или -imacros параметров командной строки.

Если явно не указано (с -MT или -MQ ), имя файла объекта состоит из имени исходного файла с заменой любого суффикса на суффикс файла объекта и удалением любых ведущих частей каталога. Если имеется много включённых файлов, то правило разбивается на несколько строк с использованием ‘\’-новой строки. Правило не имеет команд.

Этот параметр не подавляет вывод отладки препроцессора, такой как -dM. Чтобы избежать смешения такого вывода отладки с правилами зависимостей, вы должны явно указать файл вывода зависимостей с -MF, или использовать переменную среды, такую как DEPENDENCIES_OUTPUT (см. Переменные среды). Вывод отладки всё равно будет отправлен в обычный поток вывода, как обычно.

Передача -M драйверу подразумевает -E, и подавляет предупреждения с неявным -w.

-MM
Как -M , но не упоминает заголовочные файлы, которые находятся в системных каталогах заголовков, ни заголовочные файлы, которые включены, непосредственно или косвенно, из такого заголовка.

Это означает, что выбор угловых скобок или двойных кавычек в директиве ‘#include’ сам по себе не определяет, будет ли этот заголовок появляться в -MM выводе зависимостей. Это небольшое изменение семантики по сравнению с версиями GCC 3.0 и более ранними.

-MF file
При использовании с -M или -MM, указывает файл для записи зависимостей. Если переключатель -MF не задан, препроцессор отправляет правила в то же место, куда он отправил бы обработанный вывод.

При использовании с параметрами драйвера -MD или -MMD, -MF переопределяет файл вывода зависимостей по умолчанию.

-MG
В сочетании с таким параметром, как -M , запрашивающим создание зависимостей, -MG предполагает, что отсутствующие заголовочные файлы являются генерируемыми файлами, и добавляет их в список зависимостей без выдачи ошибки. Имя файла зависимости берётся непосредственно из директивы #include без добавления какого-либо пути. -MG также подавляет вывод предварительной обработки, поскольку отсутствующий заголовочный файл делает это бесполезным.

Эта функция используется в автоматическом обновлении файлов make.

-MP
Этот параметр инструктирует CPP добавить фиктивную цель для каждой зависимости, отличной от основного файла, заставляя каждую зависеть ни от чего. Эти фиктивные правила обходят ошибки, которые make даёт, если вы удаляете заголовочные файлы, не обновив Makefile для соответствия.

Вот типичный вывод:

test.o: test.c test.h

test.h:
-MT target
Изменить цель правила, выданного генерацией зависимостей. По умолчанию CPP берёт имя основного входного файла, удаляет компоненты каталога и любой суффикс файла, например ‘.c’, и добавляет стандартный суффикс объекта платформы. Результат — цель.

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

Например, -MT '$(objpfx)foo.o' может дать

$(objpfx)foo.o: foo.c
-MQ target
То же, что и -MT, но он экранирует любые символы, являющиеся специальными для Make. -MQ '$(objpfx)foo.o' даёт
$$(objpfx)foo.o: foo.c

Целевая цель по умолчанию автоматически экранируется, как если бы она была задана с помощью -MQ.

-MD
-MD эквивалентно -M -MF file, за исключением того, что -E не подразумевается. Драйвер определяет file на основе того, указан ли параметр -o. Если указан, драйвер использует его аргумент, но с суффиксом .d, в противном случае он берёт имя входного файла, удаляет все компоненты каталога и суффикс, и применяет суффикс .d.

Если -MD используется совместно с -E, любой переключатель -o понимается как указание на файл вывода зависимостей (см. -MF), но если используется без -E, каждый -o понимается как указание на целевой объектный файл.

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

-MMD
Как -MD, за исключением того, что упоминаются только заголовочные файлы пользователя, а не системные заголовочные файлы.
-x c
-x c++
-x objective-c
-x assembler-with-cpp
Укажите язык исходного кода: C, C++, Objective-C или ассемблер. Это не имеет ничего общего с соответствием стандартам или расширениями; это просто выбор базового синтаксиса, которого следует ожидать. Если вы не укажете ни один из этих параметров, cpp определит язык по расширению файла исходного кода: ‘.c’, ‘.cc’, ‘.m’ или ‘.S’. Также распознаются некоторые другие распространённые расширения для C++ и ассемблера. Если cpp не распознаёт расширение, он обработает файл как C; это наиболее универсальный режим.

Примечание: Предыдущие версии cpp принимали параметр -lang, который выбирал как язык, так и уровень соответствия стандартам. Этот параметр был удалён, потому что он конфликтует с параметром -l.

-std=standard
-ansi
Укажите стандарт, которому должен соответствовать код. В настоящее время CPP знает о стандартах C и C++; в будущем могут быть добавлены другие.

standard может быть одним из:

c90
c89
iso9899:1990
Стандарт ISO C 1990 года. ‘c90’ — это обычное сокращение для этой версии стандарта.

Параметр -ansi эквивалентен -std=c90.

iso9899:199409
Стандарт C 1990 года, изменённый в 1994 году.
iso9899:1999
c99
iso9899:199x
c9x
Пересмотренный стандарт ISO C, опубликованный в декабре 1999 года. До публикации он был известен как C9X.
iso9899:2011
c11
c1x
Пересмотренный стандарт ISO C, опубликованный в декабре 2011 года. До публикации он был известен как C1X.
gnu90
gnu89
Стандарт C 1990 года плюс расширения GNU. Это значение по умолчанию.
gnu99
gnu9x
Стандарт C 1999 года плюс расширения GNU.
gnu11
gnu1x
Стандарт C 2011 года плюс расширения GNU.
c++98
Стандарт ISO C++ 1998 года плюс поправки.
gnu++98
То же, что -std=c++98 плюс расширения GNU. Это значение по умолчанию для кода C++.
-I-
Разделить путь к включению. Любые каталоги, указанные с параметрами -I перед -I-, проверяются только на наличие заголовков, запрошенных с #include "file"; они не проверяются на наличие #include <file>. Если дополнительные каталоги указаны с параметрами -I после -I-, эти каталоги проверяются на наличие всех директив ‘#include’.

Кроме того, -I- запрещает использование каталога текущего файла в качестве первого каталога поиска для #include "file". См. Путь поиска. Этот параметр устарел.

-nostdinc
Не проверять стандартные системные каталоги на наличие заголовочных файлов. Проверяются только те каталоги, которые вы указали с параметрами -I (и каталог текущего файла, если это применимо).
-nostdinc++
Не искать заголовочные файлы в специальных каталогах для C++, но всё ещё искать в других стандартных каталогах. (Этот параметр используется при построении библиотеки C++.)
-include file
Обработать file так, как будто #include "file" появился в первой строке основного файла исходного кода. Однако первый каталог, в котором ищется file, — это рабочая директория препроцессора, а не каталог, содержащий основной файл исходного кода. Если не найдено там, то ищется в остальной части цепочки поиска #include "..." в обычном порядке.

Если задано несколько параметров -include, файлы включаются в порядке их появления в командной строке.

-imacros file
Точно так же, как -include, за исключением того, что любой вывод, полученный при сканировании file, отбрасывается. Определённые в нём макросы остаются определёнными. Это позволяет вам получить все макросы из заголовка без обработки его объявлений.

Все файлы, указанные с параметром -imacros, обрабатываются до всех файлов, указанных с параметром -include.

-idirafter dir
Искать dir заголовочные файлы, но делать это после того, как были исчерпаны все каталоги, указанные с -I и стандартные системные каталоги. dir обрабатывается как системный каталог включения. Если dir начинается с =, то = будет заменён префиксом sysroot; см. --sysroot и -isysroot.
-iprefix prefix
Указать prefix в качестве префикса для последующих -iwithprefix параметров. Если префикс представляет каталог, вы должны включить завершающий ‘/’.
-iwithprefix dir
-iwithprefixbefore dir
Добавить dir к префиксу, указанному ранее с -iprefix, и добавить полученный каталог в путь поиска включений. -iwithprefixbefore помещает его в то же место, что и -I; -iwithprefix помещает его туда, где бы находился -idirafter.
-isysroot dir
Этот параметр похож на параметр --sysroot, но применяется только к заголовочным файлам (за исключением целевых платформ Darwin, где он применяется как к заголовочным файлам, так и к библиотекам). См. параметр --sysroot для получения дополнительной информации.
-imultilib dir
Использовать dir в качестве подкаталога каталога, содержащего целевые заголовочные файлы C++.
-isystem dir
Искать dir заголовочные файлы после всех каталогов, указанных с -I, но перед стандартными системными каталогами. Отметить его как системный каталог, чтобы он получал такое же специальное обращение, как и стандартные системные каталоги. См. Системные заголовки. Если dir начинается с =, то = будет заменён префиксом sysroot; см. --sysroot и -isysroot.
-iquote dir
Искать dir только заголовочные файлы, запрошенные с #include "file"; они не ищутся для #include <file>, перед всеми каталогами, указанными с -I, и перед стандартными системными каталогами. См. Путь поиска. Если dir начинается с =, то = будет заменён префиксом sysroot; см. --sysroot и -isysroot.
-fdirectives-only
При предварительной обработке обрабатывать директивы, но не расширять макросы.

Поведение параметра зависит от параметров -E и -fpreprocessed.

С -E, предварительная обработка ограничивается обработкой директив, таких как #define, #ifdef, и #error. Другие операции препроцессора, такие как расширение макросов и преобразование триграфов, не выполняются. Кроме того, параметр -dD неявно включён.

С -fpreprocessed, предопределение командной строки и большинства встроенных макросов отключено. Макросы, такие как __LINE__, которые зависят от контекста, обрабатываются нормально. Это позволяет компилировать файлы, предварительно обработанные с помощью -E -fdirectives-only.

При использовании обоих параметров -E и -fpreprocessed, правила для -fpreprocessed имеют приоритет. Это позволяет полностью выполнить предварительную обработку файлов, предварительно обработанных с помощью -E -fdirectives-only.

-fdollars-in-identifiers
Принимать ‘$’ в идентификаторах. См. Символы идентификаторов.
-fextended-identifiers
Принимать универсальные имена символов в идентификаторах. Этот параметр является экспериментальным; в будущей версии GCC он будет включён по умолчанию для C99 и C++.
-fno-canonical-system-headers
При предварительной обработке не сокращать пути к системным заголовочным файлам с помощью канонизации.
-fpreprocessed
Укажите препроцессору, что входной файл уже был предварительно обработан. Это подавляет такие действия, как расширение макросов, преобразование триграфов, склеивание экранированных новых строк и обработку большинства директив. Препроцессор по-прежнему распознает и удаляет комментарии, так что вы можете передать файл, предварительно обработанный с -C , в компилятор без проблем. В этом режиме интегрированный препроцессор представляет собой не более чем токенизатор для фронтендов.

-fpreprocessed подразумевается, если входной файл имеет один из расширений «.i», «.ii» или «.mi». Это расширения, которые GCC использует для предварительно обработанных файлов, созданных -save-temps.

-ftabstop=width
Установите расстояние между отступами табуляции. Это помогает препроцессору сообщать правильные номера столбцов в предупреждениях или ошибках, даже если на строке присутствуют табуляции. Если значение меньше 1 или больше 100, опция игнорируется. По умолчанию используется значение 8.
-fdebug-cpp
Эта опция полезна только для отладки GCC. При использовании с -E, выводит отладочную информацию о картах расположения. Каждый токен в выводе предваряется выводом карты, к которой относится его расположение. Вывод карты, содержащей расположение токена, будет следующим:
{‘P’:/file/path;‘F’:/includer/path;‘L’:line_num;‘C’:col_num;‘S’:system_header_p;‘M’:map_address;‘E’:macro_expansion_p,‘loc’:location}

При использовании без -E, эта опция не оказывает влияния.

-ftrack-macro-expansion[=level]
Отслеживайте расположения токенов во время расширения макросов. Это позволяет компилятору выдавать диагностические сообщения о текущей стеке расширения макросов при возникновении ошибки компиляции во время расширения макроса. Использование этой опции приводит к увеличению потребления памяти препроцессором и компилятором. Параметр level может быть использован для выбора уровня точности отслеживания расположения токенов, тем самым уменьшая потребление памяти при необходимости. Значение «0» параметра level деактивирует эту опцию так же, как если бы на командной строке не было -ftrack-macro-expansion. Значение «1» отслеживает расположения токенов в режиме пониженной точности для минимального увеличения нагрузки на память. В этом режиме все токены, полученные в результате расширения аргумента макроса типа функции, имеют одинаковое расположение. Значение «2» полностью отслеживает расположения токенов. Это значение наиболее ресурсоёмкое. Если опция задаётся без аргументов, значение параметра по умолчанию — «2».

Обратите внимание, что -ftrack-macro-expansion=2 активирован по умолчанию.

-fexec-charset=charset
Устанавливает выполняемый набор символов, используемый для строковых и символьных констант. По умолчанию используется UTF-8. charset может быть любым кодированием, поддерживаемым системной библиотекой iconv.
-fwide-exec-charset=charset
Устанавливает широкий выполняемый набор символов, используемый для широких строковых и символьных констант. По умолчанию используется UTF-32 или UTF-16, в зависимости от ширины wchar_t. Как и в случае с -fexec-charset, charset может быть любым кодированием, поддерживаемым системной библиотекой iconv; однако, у вас могут возникнуть проблемы с кодировками, которые не помещаются точно в wchar_t.
-finput-charset=charset
Устанавливает входной набор символов, используемый для преобразования из набора символов входного файла в исходный набор символов, используемый GCC. Если локаль не указывает или GCC не может получить эту информацию из локальной настройки, по умолчанию используется UTF-8. Это может быть переопределено либо локалью, либо этой опцией командной строки. В настоящее время опция командной строки имеет приоритет в случае конфликта. charset может быть любым кодированием, поддерживаемым системной библиотекой iconv.
-fworking-directory
Включить генерацию маркеров строк в выводе препроцессора, которые позволят компилятору узнать текущую рабочую директорию во время предварительной обработки. При включении этой опции препроцессор будет генерировать после начального маркера строки второй маркер строки с текущей рабочей директорией, за которым следуют две косые черты. GCC будет использовать эту директорию, когда она присутствует в предварительно обработанном входе, как директорию, выведенную как текущую рабочую директорию в некоторых форматах отладочной информации. Эта опция неявно включена, если включена отладочная информация, но это можно отключить с помощью отрицательной формы -fno-working-directory. Если флаг -P присутствует в командной строке, эта опция не имеет эффекта, так как #line директивы вообще не генерируются.
-fno-show-column
Не отображать номера столбцов в диагностических сообщениях. Это может потребоваться, если диагностические сообщения анализируются программой, которая не понимает номера столбцов, такой как dejagnu.
-A predicate=answer
Выполнить утверждение с предикатом predicate и ответом answer. Этот формат предпочтительнее более старого формата -A predicate(answer), который всё ещё поддерживается, потому что не использует специальные символы оболочки. См. Устаревшие возможности.
-A -predicate=answer
Отменить утверждение с предикатом predicate и ответом answer.
-dCHARS
CHARS представляет собой последовательность одного или нескольких из следующих символов и не должна предваряться пробелом. Другие символы интерпретируются самим компилятором или зарезервированы для будущих версий GCC, и поэтому игнорируются. Если вы укажете символы, поведение которых конфликтует, результат будет неопределенным.
‘M’
Вместо обычного вывода генерируется список директив ‘#define’ для всех макросов, определённых во время выполнения препроцессора, включая предопределённые макросы. Это даёт возможность узнать, что предопределено в вашей версии препроцессора. Предполагая, что у вас нет файла foo.h, команда
touch foo.h; cpp -dM foo.h

отобразит все предопределённые макросы.

Если вы используете -dM без опции -E, -dM интерпретируется как синоним -fdump-rtl-mach. См. Опции отладки.

‘D’
Подобно ‘M’, но с двумя исключениями: оно не включает предопределённые макросы и выводит обе директивы ‘#define’ и результат предварительной обработки. Оба вида вывода направляются в стандартный вывод.
‘N’
Подобно ‘D’, но выводит только имена макросов, а не их расширения.
‘I’
Выводит директивы ‘#include’ дополнительно к результату предварительной обработки.
‘U’
Подобно ‘D’, за исключением того, что выводятся только макросы, которые расширены или чья определённость проверяется в директивах препроцессора; вывод отложен до использования или проверки макроса; и директивы ‘#undef’ также выводятся для макросов, которые проверялись, но не были определены на момент проверки.
-P
Запретить генерацию маркеров строк в выводе препроцессора. Это может быть полезно при запуске препроцессора на чём-то, что не является кодом C, и что будет отправлено программе, которая может быть сбита с толку маркерами строк. См. Вывод препроцессора.
-C
Не отбрасывать комментарии. Все комментарии передаются в выходной файл, за исключением комментариев в обработанных директивах, которые удаляются вместе с директивой.

Вы должны быть готовы к побочным эффектам при использовании -C; это заставляет препроцессор обрабатывать комментарии как токены сами по себе. Например, комментарии в начале строки, которая могла бы быть директивой, имеют эффект превращения этой строки в обычную строку исходного кода, так как первый токен в строке больше не является ‘#’.

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

В дополнение к побочным эффектам опции -C, опция -CC заставляет все комментарии в стиле C++ внутри макроса преобразовываться в комментарии в стиле C. Это предотвращает случайное комментирование оставшейся части строки исходного кода при последующем использовании макроса.

Опция -CC обычно используется для поддержки комментариев lint.

-traditional-cpp
Попытаться воспроизвести поведение устаревших препроцессоров C, в отличие от препроцессоров ISO C. См. Традиционный режим.
-trigraphs
Обрабатывать триграф-последовательности. См. Первоначальная обработка.
-remap
Включить специальный код для обхода файловых систем, которые допускают только очень короткие имена файлов, например, MS-DOS.
--help
--target-help
Вывести текст, описывающий все опции командной строки, вместо предварительной обработки чего-либо.
-v
Режим подробного вывода. Вывести номер версии GNU CPP в начале выполнения и отчёт о конечном виде пути включения.
-H
Вывести имя каждого используемого заголовочного файла, помимо других обычных действий. Каждое имя отступается, чтобы показать, насколько глубоко оно находится в стеке ‘#include’. Предварительно скомпилированные заголовочные файлы также выводятся, даже если они признаны недействительными; недействительный предварительно скомпилированный заголовочный файл выводится со значением ‘...x’, а действительный — со значением ‘...!’.
-version
--version
Вывести номер версии GNU CPP. С одной тире, продолжить предварительную обработку в обычном режиме. С двумя тире, немедленно завершить работу.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/cpp/Invocation.html

Spec-Zone.ru

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