爲什麼有兩種方法在CPP中「聲明」常量?
哪個更好,還是我應該寫,我應該在什麼時候使用?爲什麼在CPP中定義了常量和聲明的常量?
#define MYCON 100
const int MYCON=100
爲什麼有兩種方法在CPP中「聲明」常量?
哪個更好,還是我應該寫,我應該在什麼時候使用?爲什麼在CPP中定義了常量和聲明的常量?
#define MYCON 100
const int MYCON=100
短規則:對於條件編譯(像用於調試和發佈不同的代碼片段)使用#define
。對於所有其他情況,請使用const
構造。
+1錯誤做法:拇指好的規則 - 不肯定爲什麼別人給你一個這樣的票? – 2010-04-20 21:54:21
使用#define
會產生一個預處理器符號:它在預處理髮生後根本不存在,相當於在文件中輸入了「100」。
特色預處理符號:
#ifdef
type*
)使用const type
d eclares一個C++變量。
它被廣泛認爲是更好的使用const
爲「in program」常量和#define
僅用於條件編譯(表示從(非常!)舊時代開始的變化,當您不能始終依靠c編譯器來處理const
智能地使用#define
是優選的)。如果沒有其他內容,這可以更好地控制符號的範圍。
在C的原始版本中,#define
是唯一可用於聲明常量值的方法。這是在編譯時而不是在運行時完成的:編譯器對每條指令的值進行硬編碼。 const
是C++(後來以有限的方式添加到C中)的一個特性,並且在C++中建議您使用const而不是#define。 const
變量實際上存在於內存中,並且可以在運行時在構造時初始化。
#define
然而,仍然經常在C++中使用,主要用於與編譯器通信。
一些例子:
類的頭包裝,以防止多個類聲明:
#ifdef VAL_H
#define VAL_H
// Define class header
#endif // VAL_H
條件編譯:
// Comment this line to disable debug output
#define DEBUG
// Some code
#ifdef DEBUG
// Only gets compiled if DEBUG is defined.
cerr << "Debug output here" << endl;
#endif
由C – 2010-05-21 18:48:14