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