Sự khác biệt giữa nội tuyến và vĩ mô Khác biệt giữa

Anonim

Inline vs Macro

C + + đã đi quá xa trong lĩnh vực lập trình máy tính những ngày này. Là một ngôn ngữ mạnh mẽ, đôi khi nó hơi nhầm lẫn với các lập trình viên bởi vì nó có rất nhiều chức năng của thư viện. Chức năng nội tuyến là một trong số đó có thể dễ dàng bị lẫn lộn với các macro trong ngôn ngữ.

Không phải là có một sự khác biệt nhỏ giữa hai, nhưng chúng có thể là một chút khó hiểu vì các thuộc tính mà chúng nắm giữ. Trong bài này, chúng ta sẽ thảo luận nhiều hơn về sự khác biệt giữa hàm tuyến tính và các macro trong C ++.

-1->

Inline

Một hàm nội tuyến giống như bất kỳ hàm nào khác trong C ++ và cũng được gọi theo cách thường xuyên. Chức năng mà nó thực hiện là nó tạo ra một bản sao của định nghĩa hàm biên dịch. Tức là, nó tạo ra một bản sao của các mục được xác định để biên dịch. Một ví dụ có thể được thực hiện nếu chúng ta thêm hai số nguyên và gọi nó là hàm nội tuyến, trình biên dịch sẽ tạo ra một bản sao của các số nguyên được biên dịch.

Ví dụ:

Inline int sum (int x, int y)

(Trả về (x + y);

}

Macro

Macros trong C ++ thực hiện thay thế văn bản trong một dòng chương trình. Nghĩa là, chúng thay thế văn bản theo sự thay đổi được xác định trong hàm. Không giống như nội tuyến như một hàm, một macro thao túng mã bằng một hàm. Ví dụ:

# xác định DOUBLE (X) X * X

int y = 5;

int j = DOUBLE (++ y);

Ở đây, chúng tôi sẽ nhận được giá trị là 30! Khi cuộc gọi đã được thực hiện thông qua một macro, "X" đã được thay thế bằng ++ y làm cho ++y được nhân với một số khác + y + y. Điều này làm cho tổng số 5 * 6 là 30 không 6. Sáu sẽ là cơ bản nhưng một câu trả lời sai.

Bây giờ macro có thể gây ra lỗi ở đây. Vì vậy, một chức năng nội tuyến đến để giải cứu bằng cách sao chép các giá trị cho bộ nhớ của trình biên dịch và sau đó biên dịch nó.

Tóm tắt:

1. Một hàm nội tuyến tạo ra một bản sao của định nghĩa hàm.

2. Macro thay thế văn bản như được xác định và xác định trong hàm.

3. Một hàm nội tuyến cũng được áp dụng khi một macro được cho là gây ra một lỗi trong chương trình.