Sự khác biệt giữa Inline và Macro trong C ++
NộI Dung
Macro là một lệnh mở rộng tại thời điểm gọi của nó. Các chức năng cũng có thể được xác định, như macro. Tương tự, các hàm nội tuyến cũng mở rộng tại điểm gọi của nó. Một sự khác biệt chính giữa chức năng nội tuyến và macro là chức năng nội tuyến được mở rộng trong biên soạn, và macro được mở rộng khi chương trình được xử lý bởi tiền xử lý.
Hãy cùng nghiên cứu sự khác biệt giữa nội tuyến và vĩ mô với sự trợ giúp của biểu đồ so sánh.
- Biểu đồ so sánh
- Định nghĩa
- Sự khác biệt chính
- Phần kết luận
Biểu đồ so sánh
Cơ sở để so sánh | Nội tuyến | Vĩ mô |
---|---|---|
Căn bản | Các hàm nội tuyến được phân tích cú pháp bởi trình biên dịch. | Macro được mở rộng bởi bộ tiền xử lý. |
Cú pháp | return_type func_name (tham số) nội tuyến {. . . } | #define macro_name char_ resultence |
Từ khóa được sử dụng | nội tuyến | #định nghĩa |
Xác định | Nó có thể được định nghĩa bên trong hoặc bên ngoài lớp. | Nó luôn được xác định khi bắt đầu chương trình. |
Đánh giá | Nó đánh giá đối số chỉ một lần. | Nó đánh giá đối số mỗi lần nó được sử dụng trong mã. |
Sự bành trướng | Trình biên dịch có thể không nội tuyến và mở rộng tất cả các chức năng. | Macro luôn được mở rộng. |
Tự động hóa | Các hàm ngắn, được định nghĩa bên trong lớp được tự động tạo thành các hàm nội tuyến. | Macro nên được xác định cụ thể. |
Truy cập | Một hàm thành viên nội tuyến có thể truy cập các thành viên dữ liệu của lớp. | Macro không bao giờ có thể là thành viên của lớp và không thể truy cập các thành viên dữ liệu của lớp. |
Chấm dứt | Định nghĩa hàm nội tuyến chấm dứt với dấu ngoặc nhọn ở cuối hàm nội tuyến. | Định nghĩa vĩ mô chấm dứt với dòng mới. |
Gỡ lỗi | Gỡ lỗi dễ dàng cho một hàm nội tuyến vì việc kiểm tra lỗi được thực hiện trong quá trình biên dịch. | Việc gỡ lỗi trở nên khó khăn đối với các macro vì việc kiểm tra lỗi không xảy ra trong quá trình biên dịch. |
Ràng buộc | Hàm nội tuyến liên kết tất cả các câu lệnh trong phần thân của hàm cũng như phần thân của hàm bắt đầu và kết thúc bằng dấu ngoặc nhọn. | Một macro phải đối mặt với vấn đề ràng buộc nếu nó có nhiều hơn một câu lệnh, vì nó không có ký hiệu kết thúc. |
Định nghĩa nội tuyến
Một hàm nội tuyến trông giống như một hàm thông thường, nhưng trước từ khóa lànội tuyếnSọ. Các hàm nội tuyến là các hàm có độ dài ngắn được mở rộng tại điểm gọi của nó, thay vì được gọi. Hãy để hiểu các chức năng nội tuyến với một ví dụ.
#inc loại Trong chương trình trên, tôi đã khai báo và định nghĩa, hàm khởi tạo (), như là một hàm nội tuyến trong lớp Ví dụ ví dụ. Mã của hàm khởi tạo () sẽ mở rộng nơi nó được gọi bởi đối tượng của lớp Ví dụ, ví dụ. Hiển thị hàm (), được định nghĩa trong ví dụ lớp không được khai báo nội tuyến nhưng nó có thể được trình biên dịch xem là nội tuyến trong C ++, hàm được định nghĩa bên trong lớp được trình biên dịch tự động tạo thành nội tuyến bằng cách xem xét độ dài của hàm. Macro là một bộ tiền xử lý của bộ phận trực tiếp. Trước khi biên dịch, chương trình được kiểm tra bởi bộ tiền xử lý và bất cứ khi nào nó tìm thấy macro trong chương trình, nó sẽ thay thế macro đó theo định nghĩa của nó. Do đó, macro được coi là sự thay thế của Wap. Hãy để chúng tôi nghiên cứu vĩ mô với một ví dụ. #inc loại Trong đoạn mã trên, tôi đã khai báo một hàm macro GREATER (), để so sánh và tìm số lượng lớn hơn của cả hai tham số. Bạn có thể quan sát rằng không có dấu chấm phẩy để chấm dứt macro vì macro chỉ bị chấm dứt bởi dòng mới. Vì macro chỉ là một sự thay thế, nó sẽ mở rộng mã của macro nơi nó được gọi. Các chức năng nội tuyến có sức thuyết phục hơn nhiều so với chức năng vĩ mô. C ++ cũng cung cấp một cách tốt hơn để xác định hằng số, sử dụng từ khóa của const const.
Định nghĩa vĩ mô
Kết luận: