Это может звучать как очень странный вопрос, но мне это нужно: у меня есть куча заголовочных файлов c ++ (из некоторых библиотек только для заголовков) и один файл cpp. То, что я хотел бы сделать, это сгенерировать один файл cpp, который не содержит никаких включений.
Зачем? Для конкурса, в котором у компилятора нет некоторых библиотек, которые я использую, и в которых вы можете отправить только один единственный файл cpp.
В идеале этот «скрипт» должен создавать файл, который использует только то, что действительно нужно, а не просто рекурсивно копировать и вставлять все «#include».
Я уверен, что препроцессор генерирует некоторые файлы, когда вы добавляете «#include» в коде. Итак, как я могу увидеть эти промежуточные и (возможно, очень длинные) файлы?
НКУ обеспечивает -E
опция, поэтому она останавливается после предварительной обработки файлов. документация имеет больше опций, которые можно применить к препроцессору.
лязг также принимает -E
, как указано Вот.
Visual Studio обеспечивает / P (предварительная обработка в файл) переключатель компилятора. Он инструктирует компилятор:
Предварительно обработайте исходные файлы [es] C и C ++ и запишите [s] предварительно обработанный вывод в файл.
Вывод записывается в файл с именем файла на основе исходного файла с расширением .i. Чтобы указать другое имя файла, используйте / Fi (имя выходного файла предварительной обработки) переключатель компилятора.
Компилятор Intel C ++ остановится после предварительной обработки, если вы передадите -E
опция (вывод на stdout
) или же -P
(выводит в файл). На Windows это будет /E
а также /P
переключается соответственно. руководство имеет больше информации по этому вопросу.
Других решений пока нет …