Mình đã đọc trang này https://docs.microsoft.com/en-us/cpp...p?view=vs-2019 và thấy dùng #line rất bất tiện
Có chương trình sau
C++ Code:
  1. #include <cstdio>
  2. #define ASSERT(cond) if( !(cond) )\
  3. {printf( "assertion error line %d, file(%s)\n", \
  4. __LINE__, __FILE__ );}
  5. int main()
  6. {
  7.     #line 151 "copy.cpp"
  8.     //
  9.     //
  10.     ASSERT(false)
  11.     //
  12.     #line 25 "copy.cpp"
  13.     //
  14.     //
  15.     ASSERT(false)
  16. }
  17. /* kết quả là
  18. assertion error line 153, file(copy.cpp)
  19. assertion error line 27, file(copy.cpp)
  20.  
  21. */
Với kết quả như vậy, để xác định dòng gây ra lỗi, ta phải tìm ra tất cả các dòng có #line rồi đoán xem dòng lỗi có vị trí tương đối với #line nào rồi đếm dòng cho tới dòng "có thể" là dòng lỗi, chương trình có bao nhiêu dòng #line thì có bấy nhiêu dòng có khả năng lỗi (có thể ít hơn 1 chút). Như vậy đó.
Bạn nào có thể cho biết ưu điểm của #line không?