Я хочу получить только предварительно обработанную версию file.cc
, я сделал g++ -E file.cc
, получил:
# 1 "file.cc"# 1 "<command-line>"# 1 "file.cc"
Что я сделал не так?
Предполагается, что ваш исходный файл содержит простую основную функцию:
$ 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
блоки с условием, которое оценивается как ложное — поскольку препроцессор отфильтровывает их, они также не отображаются в выходных данных.
Если вы не хотите использовать линейные маркеры, используйте опцию -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.