Tôi hiểu rằng inline
bản thân nó là một gợi ý cho trình biên dịch và tùy theo quyết định của nó, nó có thể nội dòng hoặc không nội tuyến hàm và nó cũng sẽ tạo ra mã đối tượng có thể liên kết.
Tôi nghĩ rằng điều đó static inline
cũng tương tự (có thể có hoặc có thể không nội dòng) nhưng sẽ không tạo ra mã đối tượng có thể liên kết khi nội tuyến (vì không có mô-đun nào khác có thể liên kết với nó).
Chỗ nào extern inline
phù hợp với bức tranh?
Giả sử tôi muốn thay thế một macro tiền xử lý bằng một hàm nội tuyến và yêu cầu hàm này được nội tuyến (ví dụ: vì nó sử dụng __FILE__
và __LINE__
macro sẽ giải quyết cho người gọi chứ không phải hàm được gọi này). Đó là, tôi muốn xem lỗi trình biên dịch hoặc trình liên kết trong trường hợp hàm không được nội tuyến. Làm được extern inline
điều này? (Tôi cho rằng, nếu không, không có cách nào để đạt được hành vi này ngoài việc gắn bó với macro.)
Có sự khác biệt giữa C ++ và C không?
Có sự khác biệt giữa các nhà cung cấp và phiên bản trình biên dịch khác nhau không?