#define
定義的指定,程序在預(yù)處理階段將用#define所定義的內(nèi)容只是進(jìn)行了替換狂秘。因此程序運(yùn)行時(shí)骇径,常量表中并沒有用#define所定義的宏,系統(tǒng)并不為它分配內(nèi)存者春,并且在編譯時(shí)不會(huì)檢查數(shù)據(jù)類型破衔,出錯(cuò)的概率要大一些。
注意:宏只是簡(jiǎn)單的替換
#define N 2 + 3
int a = N / 2;
//a的值就是:a = 2 + 3 / 2 = 3.5;
const
定義的常量钱烟,在程序運(yùn)行時(shí)是存放在常量表中晰筛,系統(tǒng)會(huì)為它分配內(nèi)存,并且在編譯時(shí)會(huì)進(jìn)行類型檢查拴袭。
volatile
優(yōu)化器在用到這個(gè)變量時(shí)必須每次都要小心地重新讀取這個(gè)變量值读第,而不是使用保存在寄存器里的備份