Trong những trường hợp hiếm hoi, có thể hữu ích để thay đổi dòng được đưa ra bởi __LINE__
một thứ khác. Tôi đã thấy cấu hình GNU thực hiện điều đó đối với một số thử nghiệm để báo cáo số dòng thích hợp sau khi nó chèn một số voodoo giữa các dòng không xuất hiện trong các tệp nguồn gốc. Ví dụ:
#line 100
Sẽ làm cho các dòng sau bắt đầu bằng __LINE__
100. Bạn có thể tùy ý thêm tên tệp mới
#line 100 "file.c"
Nó chỉ hiếm khi hữu ích. Nhưng nếu nó là cần thiết, không có lựa chọn thay thế nào tôi biết. Trên thực tế, thay vì dòng, một macro cũng có thể được sử dụng mà phải dẫn đến bất kỳ hình thức nào trong hai hình thức trên. Sử dụng thư viện tiền xử lý boost, bạn có thể tăng dòng hiện tại lên 50:
#line BOOST_PP_ADD(__LINE__, 50)
Tôi nghĩ thật hữu ích khi đề cập đến nó vì bạn đã hỏi về cách sử dụng __LINE__
và __FILE__
. Một người không bao giờ có đủ bất ngờ từ C ++ :)
Chỉnh sửa: @Jonathan Leffler cung cấp một số trường hợp sử dụng tốt hơn trong các nhận xét:
Lộn xộn với #line rất hữu ích cho các bộ xử lý trước muốn giữ các lỗi được báo cáo trong mã C của người dùng phù hợp với tệp nguồn của người dùng. Yacc, Lex và (nhiều hơn ở nhà với tôi) bộ tiền xử lý ESQL / C làm điều đó.