define,const與inlin

1>  define與const
1.編譯器處理階段不同:
define宏在編譯預處理階段展開, const常量在編譯階段使用
2.類型安全檢查不同
defined宏沒有類型,不做類型檢查,只做簡單的展開
const常量有類型,在編譯階段會執行類型檢查
3.存儲方式不同
define定義的常量在替換後運行過程中會不斷地佔用內存,在內存中有若干份copy,而const定義的常量存儲在數據段,只有一份copy,效率更高。
4.能否調試
define定義的常量不能被調試,const常量可以。
5.效率不同
編譯器通常不爲普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成爲一個編譯期間的常量,沒有了存儲與讀內存的操作,使得它的效率也很高。


2> define 與inline
1:宏define在預處理階段完成;inline在編譯階段
2:類型安全檢查:inline函數是函數:要做類型檢查;
3:替換方式:define字符串替換;inline是指嵌入代碼,在編譯過程中不單獨產生代碼,在調用函數的地方不是跳轉,而是把代碼直接寫到那裏去,對於短小的函數比較實用,且安全可靠。


發佈了28 篇原創文章 · 獲贊 18 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章