Nếu tôi tạo một hàm nội tuyến, nó có thay đổi liên kết của nó thành liên kết nội bộ không? Ví dụ: Tôi đang sử dụng hoặc gọi hàm nội tuyến trong hai tập tin:Việc tạo một hàm nội tuyến có ảnh hưởng đến liên kết của nó không?
file1.cpp
//function definition
inline void foo() {}
file2.cpp
//function definition
inline void foo() {}
Tại sao tôi cần phải xác định các chức năng nội tuyến trong mỗi tập tin để có thể gọi nó? Tôi nhận được một liên kết nội bộ? Nếu tôi sử dụng static inline
thì sao?
Trong khi tôi biết thẻ là C++, tốt để biết rằng nội tuyến trong C là theo liên kết nội bộ mặc định, ngược lại với C++ –
@Jesse: Không, nó không ngược lại. Hàm nội tuyến C (C99) cũng có liên kết bên ngoài theo mặc định trừ khi được khai báo tĩnh. – user1086635
@ user1086635: Không, trong C mặc định là liên kết nội bộ. C99 6.7.4/6 nói "Định nghĩa nội tuyến không cung cấp định nghĩa bên ngoài cho hàm, và không cấm định nghĩa bên ngoài trong một đơn vị dịch khác.", Đưa ra ví dụ tạo định nghĩa bên ngoài với khai báo bổ sung 'extern' . –