Saya memahami bahwa inline
dengan sendirinya adalah saran untuk kompiler, dan atas kebijakannya mungkin atau mungkin tidak sebaris fungsi, dan itu juga akan menghasilkan kode objek yang dapat ditautkan.
Saya pikir itu static inline
melakukan hal yang sama (mungkin atau mungkin tidak sebaris) tetapi tidak akan menghasilkan kode objek yang dapat ditautkan ketika sebaris (karena tidak ada modul lain yang dapat menautkannya).
Di mana yang extern inline
cocok dengan gambar itu?
Asumsikan saya ingin mengganti makro preprocessor dengan fungsi inline dan mensyaratkan agar fungsi ini disisipkan (misalnya, karena menggunakan makro __FILE__
dan __LINE__
yang seharusnya menyelesaikan pemanggil tetapi bukan fungsi yang disebut ini). Artinya, saya ingin melihat kesalahan compiler atau linker jika fungsinya tidak inline. Apakah extern inline
melakukan ini? (Saya berasumsi bahwa, jika tidak, tidak ada cara untuk mencapai perilaku ini selain tetap menggunakan makro.)
Apakah ada perbedaan antara C ++ dan C?
Apakah ada perbedaan antara vendor dan versi kompilator yang berbeda?