macro 大家應該都很明白就是同樣的Code在前置處理時將其代換成#define中的東西
那inline不也是代換嗎?這兩個差在哪裡?
就我所知,macro是由cpp做的,而inline是一種最佳化,所以它是由compiler做掉
所以inline並不止是代碼替換,而inline並不是在所有地方都會inline
若有個function宣告為 static inline,在其編譯單元會inline,而在其它的編譯單元會用function call,如果沒有其它程式使用到,則不會有function table
若有個function宣告為 extern inline,其都會如同macro展開程式碼,所以不會有function table
這是我google來的,不知道對不對
沒有留言:
張貼留言