Как сохранить выходные данные препроцессора с помощью среды разработки Dev-C++?

Я хотел бы иметь возможность просматривать выходные данные препроцессора, чтобы убедиться, что мои директивы препроцессора работают правильно. У Dev-C++ есть опция в Инструменты> Параметры компилятора... > Общие, чтобы добавить команды при вызове компилятора, и я добавил команду -E C:\Personal\preprocessed.cpp. Я получил ошибку компилятора, говоря, что файл не существует, но не должен ли компилятор просто создать файл в этом случае? Я создал файл, и теперь я получаю эту ошибку: cannot specify -o with -c, -S or -E with multiple files,

Почему я использую Dev-C++ вместо Visual Studio? Поскольку я все еще учусь, я хотел бы иметь возможность протестировать всего несколько строк кода, не создавая целый новый проект.

Да, я видел этот вопрос и не получил адекватного ответа. Пожалуйста, не отмечайте это как дубликат.

Заранее спасибо за помощь!

1 ответ

Решение

Я добавил команду -E C:\Personal\preprocessed.cpp. Я получил ошибку компилятора, говоря, что файл не существует, но не должен ли компилятор просто создать файл в этом случае?

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

Таким образом:

g++ -E C:\Personal\preprocessed.cpp foo.cpp

говорит компилятору, что вы хотите запустить g++ -E с парой входных файлов C:\Personal\preprocessed.cpp а также foo.cppчто, как вы обнаружили, не допускается.

Простая вещь, которую вы хотите сделать, нелепо трудна с выбранной вами IDE. Предполагая, что исходный файл, который вы хотите предварительно обработать, C:\Personal\foo.cpp и g++ в вашем PATHПросто откройте командное окно в C:\Personal и запустить:

g++ -E foo.cpp > foo.ii

Я предлагаю выходной файл foo.ii - хотя вы можете называть это как угодно - потому что g++ распознает расширение .ii как обозначение исходного кода C++, который уже был предварительно обработан. Вы можете запустить:

g++ -Wall -o prog foo.ii

а также foo.ii будет скомпилирован и связан как программа prog без предварительной обработки снова.

Другие вопросы по тегам