выход препроцессора g ++

Я хочу получить только предварительно обработанную версию file.cc, я сделал g++ -E file.cc, получил:

# 1 "file.cc"# 1 "<command-line>"# 1 "file.cc"

Что я сделал не так?

5

Решение

Предполагается, что ваш исходный файл содержит простую основную функцию:

$ cat file.cc
int main() {
return 0;
}

Затем, с помощью показанной вами команды, результат будет выглядеть так:

$ g++ -E file.cc
# 1 "file.cc"# 1 "<built-in>"# 1 "<command-line>"# 1 "file.cc"
int main() {
return 0;
}

Вывод, который показан в вопросе, происходит, когда file.cc пустой. Обратите внимание, что «пустой» означает, что файл все еще может содержать комментарии, или #ifdef блоки с условием, которое оценивается как ложное — поскольку препроцессор отфильтровывает их, они также не отображаются в выходных данных.

10

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

Если вы не хотите использовать линейные маркеры, используйте опцию -P:

-P
Inhibit generation of linemarkers in the output from the preprocessor. This might
be useful when running the preprocessor on something that is not C code, and will
be sent to a program which might be confused by the linemarkers.
5

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