Em học tập lập trình C/C++, thấy trong một số chương trình người ta bao gồm để từ khóa inline trước một hàm? Ai có thể giải thích đến em ý nghĩa sâu sắc của từ khóa này và nguyên nhân nó lại được sử dụng không ạ?


*
Lê Nga • 30

Ngôn ngữ thiết kế C/C++ là một trong ngôn ngữ lập trình tương đối lâu đời, sử dụng hàm với trường đoản cú khóa inlinenếu quay lại thời kỳ của những năm 80 thì nó góp thêm phần đáng đề cập vào việc tăng tốc thời hạn thực thi mã nguồn của một hàm tốt nhất định gồm trong chương trình, bởi vì lúc đó phần cứng còn hạn chế, bài toán tối ưu hóa chương trình một cách cực tốt là điều cần thiết. Hiện giờ phần cứng máy tính xách tay đã khôn cùng mạnh, CPU đã được về tối ưu hóa, dung tích RAM tương đối lớn, ...v.v nên tuy vậy sử dụng hàm inline còn rộng rãi nhưng không lấy lại kết quả thời gian thực thi đáng kể mấy.

Bạn đang xem: Inline là gì

Nhưng nếu như bạn đã hỏi thì mình sẽ trả lời vì sao người ta lại sử dụng từ khóa inline. Để hiểu được điều này, bạn phải hiểu cơ chế hoạt động vui chơi của compiler (trình biên dịch). Lúc chạy lịch trình trong hàm main(), trình biên dịch bắt gặp một hàm nào kia thì nó sẽ:

Ngay lập tức cấp cho phát địa chỉ cửa hàng ô nhớ mang lại hàm này.Nạp (load) hàm vào trong cỗ nhớ.Nhảy vào vùng showroom bộ nhớ cất hàm này.Thực thi đoạn mã nguồn bao gồm trong hàm.Lưu lại cực hiếm trả về của hàm.Nhảy ra phía bên ngoài và liên tục thực hiện các câu lệnh tiếp theo.

Do đó, quá trình thực thi của compiler tốn rất nhiều thời gian, giả dụ trong trường thích hợp một hàm bé dại nào đó được gọi đi điện thoại tư vấn lại một giải pháp nhiều lần thì sao? mang sử bạn có đoạn lịch trình sau:

#include using namespace std;int tinhBieuThuc(int a, int b) return a*a*b + b*b*a - 2*a*b;int main(){ for(int i = 0; i tất cả 1.000 * 1.000 = 1.000.000 vòng lặp, cứ mỗi lần lặp lại gọi hàm tinhBieuThuc() biểu thức một lần, các lần gọi thì quá trình thực thi của trình biên dịch lại diễn ra như trên, điều này chắc chắn là không ổn rồi đúng không nào?

Cho nên, ta thực hiện từ khóa inlineđể hàm ý nói với trình biên dịch rằng đừng triển khai hàm đó một cách "lằn nhằn" như vậy, mà thực hiện trực tiếp đoạn mã nguồn có phía bên trong hàm đó luôn, do đó rất có thể tăng tốc thời hạn thực thi lên đáng kể.

Từ khóa inline trong C/C++ chỉ mang ý nghĩa gợi ý đến trình biên dịch thôi nhé. Vì thực tiễn khi chạy trình biên dịch sẽ quyết định xem hàm đó giành được sử dụng theo inline tốt không? Vậy trình biên dịch đang quyết định như thế nào?

Nếu hàm với từ khóa inline là 1 hàm nhỏ, trình biên dịch đã "chiều" ý bạn.Nếu hàm với từ bỏ khóa inline là 1 trong hàm lớn, phức tạp, trình biên dịch đang xem hàm kia như một hàm thông thường mặc dù bạn có khai báo inline hay không.

Xem thêm: Cây Bút Chì Tiếng Anh Đọc Là Gì, Từ Vựng Tiếng Anh Về Các Đồ Dùng Trong Lớp Học

Sử dụng hàm với tự khóa inline cũng có thể có một số điểm có hại mà nổi bật nhất là có tác dụng tăng kích thước chương trình của khách hàng nếu bạn áp dụng không đúng cách.