Computer >> Máy Tính >  >> Lập trình >> C ++

Sự khác biệt giữa Inline và Macro trong C ++


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