Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Khác biệt giữa Inline và Macro trong C++

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