OC:#define 和 const

替換范圍:
#define可以替換字符、基礎(chǔ)數(shù)據(jù)和語(yǔ)句等,而const不能替換語(yǔ)句。

作用階段:
#define是在編譯的預(yù)處理階段起作用,而const是在 編譯、運(yùn)行的時(shí)候起作用。

作用方式:
#define只是簡(jiǎn)單的字符串替換,沒(méi)有類型檢查。而const有對(duì)應(yīng)的數(shù)據(jù)類型,是要進(jìn)行判斷的,可以避免一些低級(jí)的錯(cuò)誤。

存儲(chǔ)方式:
#define只是進(jìn)行展開(kāi),有多少地方使用,就替換多少次,它定義的宏常量在內(nèi)存中有若干個(gè)備份;const定義的只讀變量在程序運(yùn)行過(guò)程中只有一份備份。

調(diào)試方便程度:
const常量可以進(jìn)行調(diào)試的,#define是不能進(jìn)行調(diào)試的,因?yàn)樵陬A(yù)編譯階段就已經(jīng)替換掉了。

效率和安全性
const可節(jié)省空間,避免不必要的內(nèi)存分配,提高效率。const常量有數(shù)據(jù)類型,而宏常量沒(méi)有數(shù)據(jù)類型。編譯器可以對(duì)前者進(jìn)行類型安全檢查。而對(duì)后者只進(jìn)行字符替換,沒(méi)有類型安全檢查,并且在字符替換可能會(huì)產(chǎn)生意料不到的錯(cuò)誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容