Могу ли я сжать свою собственную программу между препроцессором и компилятором? - PullRequest
2 голосов
/ 29 октября 2010

Это глупый вопрос, или я могу указать g ++ для использования программы между препроцессором и компилятором?

Кроме того, я знаю, что могу просто запустить препроцессор для файла (отсюда и для всех файлов). Тогда я предполагаю, что есть переключатель для запуска только компилятора. Так что я могу вручную вызвать эти два и поместить свою программу между ними. Если да, то как запустить только компилятор (и компоновщик?)?

Я бы предпочел первый метод, так как наш конструктор, вероятно, не согласился бы со мной:).

Ответы [ 2 ]

2 голосов
/ 29 октября 2010

Для запуска альтернативного препроцессора на справочной странице предлагается использовать -no-integrated-cpp и -B.

У меня нет опыта работы с ними, поэтому я предлагаю вам прочитать соответствующие части в man-страница .


В качестве альтернативы, вы можете запустить компилятор, не вызывая препроцессор, сказав g ++, что язык "предварительно обработан C ++":

g++ -x c++-cpp-output

g ++ также распознает файлы с суффиксом .ii как предварительно обработанный C ++, поэтому конвейер становится:

source.cpp -> source.ii: g++ -o source.ii -E source.cpp
source.ii -> source.custom.ii: <custom step>
source.custom.ii -> source.o: g++ -o source.o -c source.custom.ii
source.o -> source: g++ -o source source.o
0 голосов
/ 29 октября 2010

Посмотрите на опцию -Xpreprocessor, это позволяет вам определять новые интерпретации препроцессора

...