Trong bài đăng này, chúng ta sẽ hiểu sự khác biệt giữa nội tuyến và macro trong C ++.
Nội tuyến
-
Nó là một hàm trong C ++.
-
Nó được trình biên dịch phân tích cú pháp.
-
Nó có thể được định nghĩa bên trong hoặc bên ngoài lớp.
-
Nó chỉ đánh giá đối số một lần.
-
Trình biên dịch có thể không chuyển đổi tất cả các hàm thành hàm "inline" và mở rộng tất cả.
-
Các hàm ngắn được định nghĩa bên trong lớp sẽ tự động được tạo thành các hàm nội tuyến.
-
Một hàm nội tuyến bên trong một lớp có thể truy cập các thành viên dữ liệu của lớp.
-
Hàm nội tuyến có thể được kết thúc bằng dấu ngoặc nhọn.
-
Nó rất dễ gỡ lỗi.
-
Điều này là do việc kiểm tra lỗi được thực hiện trong quá trình biên dịch.
-
Nó liên kết tất cả các câu lệnh trong phần nội dung của hàm.
Ví dụ
inline return_type funct_name ( parameters ) { . . . }
Macro
-
Nó được mở rộng bởi bộ tiền xử lý.
-
Nó được xác định ở đầu chương trình.
-
Nó đánh giá đối số mỗi khi nó được sử dụng bên trong mã.
-
Chúng luôn cần được / được mở rộng.
-
Chúng cần được xác định cụ thể.
-
Họ sẽ không bao giờ trở thành thành viên của lớp.
-
Họ không thể truy cập dữ liệu thành viên của lớp.
-
Định nghĩa về macro kết thúc bằng dòng mới.
-
Rất khó gỡ lỗi macro vì việc kiểm tra lỗi không xảy ra trong thời gian biên dịch.
-
Nó gặp phải vấn đề ràng buộc nếu nó chứa nhiều hơn một câu lệnh vì nó không có biểu tượng kết thúc.
Ví dụ
#define macro_name char_sequence