11/08/2018, 15:52

Một vài macro hữu dụng trong C

Thấy mọi người đang thảo luận về Macro trong C. Macro có rất nhiều cách sử dụng “ảo diệu”. Nhưng bài này chỉ nói về một số macro hữu dụng cho cho việc thêm log cho code C/C++. Có bao giờ bạn debug một code C/C++ bằng một loạt các lệnh printf không? Rồi đến khi ...

Thấy mọi người đang thảo luận về Macro trong C. Macro có rất nhiều cách sử dụng “ảo diệu”. Nhưng bài này chỉ nói về một số macro hữu dụng cho cho việc thêm log cho code C/C++.

Có bao giờ bạn debug một code C/C++ bằng một loạt các lệnh printf không?

Rồi đến khi fix xong ta lại đi xóa đóng code rác đó vì nếu không xóa đi, khách hàng có thể hỏi :”Dòng đó để làm gì, tại sao lại in ra trị ở đây?”

Có khi nào log của của trình C/C++ nào khiến bạn quá khó để theo dõi vì chúng chẳng được canh lề gì cả. Hoặc có in ra log đấy nhưng quên không in ra thông tin về dòng nào ?

Hoặc bạn đã in quá nhiều log phải tắt một số log đi.

Dưới đây là một số macro dùng cho việc in log, vì cách gọi giống hệt cách gọi các hàm trong C/C++ nên dù có log thì code vẫn không quá khó nhìn.

Link tham khảo:

  1. http://stackoverflow.com/questions/1644868/c-define-macro-for-debug-printing
  2. http://c.learncodethehardway.org/book/ex20.html

Ta sẽ có một file chứa vài macro sẽ nói đến ở đây:

debug_macro.h

Các sử dụng mấy macro trên khá đơn giản, vì hàm trên được khai báo sử dụng với tham số thay đổi được.

Nên ta sử dụng giống hệt với các hàm printf mà ta vẫn biết.

Ví dụ

Môt ví dụ sử dụng

Định viết lại “Hello World” kinh điển nhưng thấy nó cũ quá. Và mình thấy giờ thấy đề bài sau chắc cũng sắp thành kinh điển rồi.

Yêu cầu : Viết chương trình mô tả luồng công việc của một programmer.

Mã giả:

  1. Vận công nghĩ keyword
  2. Tìm kiếm keyword trên google
  3. Xem link 1, xem có code sample không? Nếu có đến step 4, nếu không xem link tiếp theo.
  4. Chạy thử code sample, nếu chạy đúng, thì kết thúc, nếu chạy sai thì trở về step 3 xem link tiếp.
  5. Xem hết link mà không có kết quả, thì quay lại step 1 nghĩ từ khóa khác.

Các file source code cho chương trình trên như sau:

resultLinks.txt

program.c

Build xong và chạy.

Kết quả sau khi thực hiện sẽ như thế này: