Как я вижу исходный файл C/C++ после предварительной обработки в Visual Studio?

201
задан Peter Mortensen 4 February 2016 в 10:21
поделиться

6 ответов

cl.exe, интерфейс командной строки к Microsoft Visual C++, имеет три различных вариантов для вывода предварительно обработанного файла (следовательно несоответствие в предыдущих ответах о Visual C++):

, Если Вы хотите предварительно обработать в файл без #line директив, объединиться /P и /EP опции.

145
ответ дан Cody Gray 23 November 2019 в 05:04
поделиться

Большинство компиляторов имеет опцию просто выполнить препроцессор. , например, , gcc обеспечивает-E:

   -E  Stop after the preprocessing stage; do not run the compiler proper.  
       The output is in the form of preprocessed source code, which is sent
       to the standard output.

, Таким образом, можно просто работать:

gcc -E foo.c

, Если Вы не можете найти такую опцию, можно также просто найти препроцессор C на машине. Это обычно называло cpp и вероятно уже находится в Вашем пути. Вызовите его как это:

cpp foo.c

, Если существуют заголовки, необходимо включать из других каталогов, можно передать-I/path/to/include/dir любому из них, как Вы были бы с регулярной компиляцией.

Для Windows, я предоставлю другим плакатам право предоставлять ответы, поскольку я не эксперт там.

118
ответ дан Todd Gamblin 23 November 2019 в 05:04
поделиться

Щелкните правой кнопкой по файлу на Проводнике Решения, goto Свойства. Под Свойствами Конфигурации-> C/C++> Препроцессор, "Генерируют Предварительно обработанный Файл", то, что Вы ищете. Тогда щелкните правой кнопкой по файлу в Проводнике Решения и выберите "Компиляцию". Предварительно обработанный файл создается в выходном каталоге (например, Выпуск, Отладка) с расширением.i (благодаря Коню для его комментария).

95
ответ дан phonetagger 23 November 2019 в 05:04
поделиться

Обычно необходимо делать некоторую постобработку на выводе препроцессора, иначе все макросы просто расширяются до лайнеров, который трудно считать и отладить. Для кода C что-то как следующее было бы достаточно:

gcc -E code.c | sed '/^\#/d' | indent -st -i2 > code-x.c

Для кода C++, это на самом деле намного более твердо. Для GCC/g ++, я нашел этот сценарий Perl полезный.

18
ответ дан Peter Mortensen 23 November 2019 в 05:04
поделиться

Попробуйте cl /EP при использовании компилятора C++ Microsoft.

8
ответ дан Peter Mortensen 23 November 2019 в 05:04
поделиться

В Visual Studio можно скомпилировать файл (или проект) с/P.

6
ответ дан Andreas Magnusson 23 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: