Có thể, bằng cách sử dụng bộ tiền xử lý C / C ++, để đếm các dòng trong tệp nguồn, thành một macro hoặc một loại giá trị thời gian biên dịch nào đó? Ví dụ như tôi có thể thay thế MAGIC1
, MAGIC2
và MAGIC3
trong những điều sau đây, và có được giá trị 4 bằng cách nào đó khi sử dụng MAGIC3
?
MAGIC1 // can be placed wherever you like before the relevant
// lines - either right before them, or in global scope etc.
foo(); MAGIC2
bar(); MAGIC2
baz(); MAGIC2
quux(); MAGIC2
// ... possibly a bunch of code here; not guaranteed to be in same scope ...
MAGIC3
Ghi chú:
- Các phần mở rộng dành riêng cho trình biên dịch cho các khả năng của bộ tiền xử lý có thể chấp nhận được nhưng không mong muốn.
- Nếu điều này chỉ có thể với sự trợ giúp của một số C ++, trái ngược với C, xây dựng, điều đó cũng có thể chấp nhận được nhưng không mong muốn (ví dụ tôi muốn một cái gì đó sẽ hoạt động cho C).
- Rõ ràng điều này có thể được thực hiện bằng cách chạy tệp nguồn thông qua một số tập lệnh bộ xử lý bên ngoài, nhưng đó không phải là điều tôi đang hỏi.
__COUNTER__
và / hoặc BOOST_PP_COUNTER
?
int arr[MAGIC4]
và lấy số lượng dòng trong một số phần được tính trước đó của mã của tôi.
__LINE__
đại diện cho số dòng hiện tại