Title Image

Blog Logo

Inline Function trong C

🌱 Inline Function trong C

   👉 Inline Function là gì?

    Inline Function trong C được định nghĩa là các hàm - Functions, nhưng được thay thế bằng code trực tiếp tại mỗi lời gọi hàm. 
    Đặc điểm: 
  • Về cấu trúc Inline Function có cấu trúc giống như một Function thông thường, bao gồm tên hàm, kiểu trả về của hàm, các tham số, và nội dung của hàm. 
  • Về cách hoạt động thì Inline Function lại giống như một Function Like-Macro, nó thay thế lời gọi hàm bằng chính nội dung của hàm đó.
  • Tuy nhiên, thay vì được xử lý ở bước Preprocessor giống như Function Like-Macro, Inline Function được xử lý ở bước Compile. 

    👉 Cách sử dụng Inline Function

    Để khai báo một Inline Function, ta khai báo giống như một hàm thông thường nhưng thêm từ khóa Inline ở đầu, ví dụ:


    Hàm my_Function giờ là một inlune function và nó sẽ được thay thế bằng đoạn code printf("Hello") tại thời điểm gọi hàm trong quá trình Compile. Các bạn cần phân biệt được sự khác biệt so với các hàm thông thường, đó là lời gọi hàm - Function Call

     👉 Inline Function với GCC Compiler

    Với trình biên dịch GCC thì nó sẽ coi Inline Function như một phần của quá trình tối ưu hóa - Optimization. Vì vậy, việc gọi hàm Inline Function sẽ không thành công, do quá trình linker không thể tham chiếu tới hàm này. 


    Cách giải quyết ở đây là có thể tắt Optimization đi nếu có thể. Còn nếu vẫn muốn tiếp tục bật Optimize thì hãy thêm từ khóa static vào trước hàm inline. Điều này sẽ làm linker phải kiểm tra và tham chiếu đến hàm inline. 

Inline Function

    👉 Kết luận

    Inline function có cấu trúc như một function tuy nhiên cách sử dụng lại giống như Function Like-Macro, nó được xử lý trong quá trình Compile. Giống như Macro, nó cũng có thể làm tăng code size nếu như hàm quá lớn và được gọi nhiều lần. Vì vậy, Inline Function thường được xem xét sử dụng với những hàm có kích thước nhỏ, và xử lý số ít phép tính toán mà Marco không làm được.
    ➤ Hãy cân nhắn khi cần sử dụng Inline Function.

>>>= Follow ngay =<<<

💚 Kênh Youtube Lập trình - Điện tử 💚

Để nhận được những bài học miễn phí mới nhất nhé 😊

    Chúc các bạn học tập tốt 😊

Đăng nhận xét

3 Nhận xét

  1. kiểu hàm này dùng để làm gì vậy anh

    Trả lờiXóa
  2. Anh cho em hỏi ý "Linker không thể tham chiếu ..." là sao a nhỉ? Em nghĩ thay thế hoặc không thay thế chứ sao lại có tham chiếu gì nữa ta.

    Trả lờiXóa