Tôi muốn chỉ nhận phiên bản được xử lý trước của file.cc
. Tôi đã làm g++ -E file.cc
, đã nhận:g ++ đầu ra tiền xử lý trước
# 1 "file.cc"
# 1 "<command-line>"
# 1 "file.cc"
Tôi đã làm gì sai?
Tôi muốn chỉ nhận phiên bản được xử lý trước của file.cc
. Tôi đã làm g++ -E file.cc
, đã nhận:g ++ đầu ra tiền xử lý trước
# 1 "file.cc"
# 1 "<command-line>"
# 1 "file.cc"
Tôi đã làm gì sai?
Giả rằng tập tin nguồn của bạn có chứa một hàm chính đơn giản:
$ cat file.cc
int main() {
return 0;
}
Sau đó, với các lệnh mà bạn cho thấy, sản lượng trông như thế này:
$ g++ -E file.cc
# 1 "file.cc"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "file.cc"
int main() {
return 0;
}
Kết quả được hiển thị trong câu hỏi xảy ra khi file.cc
trống. Lưu ý rằng "trống" có nghĩa là tệp vẫn có thể chứa nhận xét hoặc #ifdef
khối có điều kiện đánh giá sai - vì bộ xử lý tiền lọc lọc chúng ra, chúng cũng không xuất hiện ở đầu ra.
Nếu bạn không muốn đánh dấu dòng, sử dụng tùy chọn -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.
Cải thiện bài viết của bạn. Có gì trong tệp nguồn của bạn, v.v. –
Tệp nguồn phải trống? – trojanfoe
Chúng tôi không thể biết bạn đã làm gì sai trừ khi bạn nói những gì bạn đã làm và những gì bạn mong đợi sẽ xảy ra. – tenfour