C ++: создание одного файла без включений

Это может звучать как очень странный вопрос, но мне это нужно: у меня есть куча заголовочных файлов c ++ (из некоторых библиотек только для заголовков) и один файл cpp. То, что я хотел бы сделать, это сгенерировать один файл cpp, который не содержит никаких включений.

Зачем? Для конкурса, в котором у компилятора нет некоторых библиотек, которые я использую, и в которых вы можете отправить только один единственный файл cpp.

В идеале этот «скрипт» должен создавать файл, который использует только то, что действительно нужно, а не просто рекурсивно копировать и вставлять все «#include».

Я уверен, что препроцессор генерирует некоторые файлы, когда вы добавляете «#include» в коде. Итак, как я могу увидеть эти промежуточные и (возможно, очень длинные) файлы?

3

Решение

  • НКУ обеспечивает -E опция, поэтому она останавливается после предварительной обработки файлов. документация имеет больше опций, которые можно применить к препроцессору.

  • лязг также принимает -E, как указано Вот.

  • Visual Studio обеспечивает / P (предварительная обработка в файл) переключатель компилятора. Он инструктирует компилятор:

    Предварительно обработайте исходные файлы [es] C и C ++ и запишите [s] предварительно обработанный вывод в файл.

    Вывод записывается в файл с именем файла на основе исходного файла с расширением .i. Чтобы указать другое имя файла, используйте / Fi (имя выходного файла предварительной обработки) переключатель компилятора.

  • Компилятор Intel C ++ остановится после предварительной обработки, если вы передадите -E опция (вывод на stdout) или же -P (выводит в файл). На Windows это будет /E а также /P переключается соответственно. руководство имеет больше информации по этому вопросу.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]