Допустим, у меня есть исходный файл со многими директивами препроцессора. Можно ли посмотреть, как это выглядит после того, как препроцессор закончил с ним?
206
Допустим, у меня есть исходный файл со многими директивами препроцессора. Можно ли посмотреть, как это выглядит после того, как препроцессор закончил с ним?
Ответы:
cl.exe
интерфейс командной строки для Microsoft Visual C ++ имеет три различных варианта вывода предварительно обработанного файла (отсюда и несоответствие в предыдущих ответах о Visual C ++):/E
: preprocess to stdout (аналогично опции -E в GCC)/P
: предварительная обработка в файл/EP
: препроцесс в стандартный вывод без директив #lineЕсли вы хотите предварительно обработать файл без директив #line, объедините параметры
/P
и/EP
.источник
/P
будет подавлять генерацию файлов obj. Поэтому, если вы добавите/P
параметры, вы можете получить ссылку, сообщающую, что некоторые файлы obj не могут быть найдены, потому что они вообще не генерируются.VS Developer command prompt
а не вCommand prompt
при попытке использовать компилятор MS (cl
). Компилятор недоступен в обычной командной строке.Большинство компиляторов имеют возможность просто запустить препроцессор. например , gcc предоставляет -E:
Так что вы можете просто запустить:
Если вы не можете найти такую опцию, вы также можете просто найти препроцессор C на вашем компьютере. Обычно он называется cpp и, вероятно, уже на вашем пути. Вызовите это так:
Если есть заголовки, которые нужно включить из других каталогов, вы можете передать -I / path / to / include / dir в любой из них, так же, как и при обычной компиляции.
Для Windows я оставлю это другим постерам, чтобы дать ответы, поскольку я не эксперт там.
источник
Щелкните правой кнопкой мыши файл в обозревателе решений, перейдите в Свойства. В разделе «Свойства конфигурации» -> C / C ++ -> Preprocessor, «Создать предварительно обработанный файл» - это то, что вы ищете. Затем щелкните правой кнопкой мыши файл в обозревателе решений и выберите «Компилировать». Предварительно обработанный файл создается в выходном каталоге (например, Release, Debug) с расширением .i (спасибо Steed за его комментарий).
источник
Release
,Debug
) с расширением.i
.Как правило, вам нужно выполнить некоторую постобработку на выходе препроцессора, иначе все макросы просто расширяются до одних строк, которые трудно читать и отлаживать. Для кода на C, что-то вроде следующего будет достаточно:
Для кода C ++ это на самом деле намного сложнее. Для GCC / g ++ я нашел этот скрипт на Perl полезным.
источник
Я ничего не знаю о компиляторе Microsoft, но на GCC вы можете использовать это:
Если вы хотите видеть комментарии, используйте это:
Дополнительные опции доступны на этой странице .
источник
Попробуйте,
cl /EP
если вы используете компилятор Microsoft C ++.источник
В Visual Studio вы можете скомпилировать файл (или проект) с помощью / P.
источник
Как ответили bk1e и Andreas M., опция / P для компилятора заставит его предварительно обработать файл. Однако в моем проекте, использующем VS2005 и Platform Builder (для встроенного процессора ARM), проект не предоставлял параметр в диалоговом окне (как описано Jim B), чтобы включить этот параметр.
Я мог запустить CL вручную и добавить / P, но это не удалось, потому что я не знал всех соответствующих параметров командной строки, которые незаметно активировались Platform Builder во время полной сборки. Поэтому мне нужно было знать все эти варианты.
Мое решение состояло в том, чтобы пойти посмотреть в файле build.log и найти строку, которая выполнила
CL blah-blah-blah myfile.c
Я скопировал эту строку в буфер обмена. Часть "бла-бла-бла" содержала параметры сборки и была огромной.
Вернувшись в IDE, я щелкнул правой кнопкой мыши на myfile.c, выбрал «Открыть окно сборки», а затем в этом окне вставил командную строку сборки и добавил «/ P».
CL /P blah-blah-blah myfile.c
Готово. Был создан файл myfile.i, который содержал выходные данные препроцессора.
источник
CPIP - это новый препроцессор C / C ++, написанный на Python. Если вы хотите детальное визуальное представление предварительно обработанного файла, сделайте это.
источник
В ОС Windows простой однострочный ответ на этот вопрос заключается в использовании приведенной ниже команды в командной строке DOS для просмотра предварительно обработанного файла:
Это создаст файл с именем myprogram.i . Откройте его и обратите внимание на расширенные препроцессоры.
источник