https://blog.csdn.net/freewaywalker/article/details/50035923
#if #ifdef #if defined(x) #endif 種種用法
怎樣才能建立在整個(gè)類中都恒定的常量呢爷狈?別指望const數(shù)據(jù)成員了贸诚,應(yīng)該用類中的枚舉常量來實(shí)現(xiàn)殊轴。例如
class A
{…
enum { SIZE1 = 100, SIZE2 = 200}; //枚舉常量
int array1[SIZE1];
int array2[SIZE2];
};
枚舉常量不會(huì)占用對(duì)象的存儲(chǔ)空間,它們?cè)诰幾g時(shí)被全部求值贼陶。枚舉常量的缺點(diǎn)是:它的隱含數(shù)據(jù)類型是整數(shù),其最大值有限,且不能表示浮點(diǎn)數(shù)(如PI=3.14159)坪稽。sizeof(A) = 1200;其中枚舉部長空間。
#define 比const多的優(yōu)點(diǎn)在于對(duì)類型無要求
const 與#define的比較
?C++ 語言可以用const來定義常量鳞骤,也可以用 #define來定義常量窒百。但是前者比后者有更多的優(yōu)點(diǎn):
(1)?const常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型豫尽。編譯器可以對(duì)前者進(jìn)行類型安全檢查篙梢。而對(duì)后者只進(jìn)行字符替換,沒有類型安全檢查美旧,并且在字符替換可能會(huì)產(chǎn)生意料不到的錯(cuò)誤(邊際效應(yīng))渤滞。
(2)?有些集成化的調(diào)試工具可以對(duì)const常量進(jìn)行調(diào)試,但是不能對(duì)宏常量進(jìn)行調(diào)試榴嗅。
#undef 標(biāo)識(shí)符
用來將前面定義的宏標(biāo)識(shí)符取消定義妄呕。