Как сохранить выходные данные препроцессора с помощью среды разработки 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
без предварительной обработки снова.