C++中在多個編譯單元中如何定義常量

【方法一】: 在某個公用的頭文件中直接在某個名字空間中或者全局名字空間中定             義符號常量並初始化(有無static)無所謂,例如:
// CommonDef.h
const int MAX_LENGTH=1024;
然後每一個使用它的編譯單元#include改頭文件即可

【方法二】: 在某個公用頭文件中並且在某個名字空間中或者全局名字空間中將符號常量聲明爲extern的,例如:
//CommonDef.h
extern const int MAX_LENGTH;
並且在某個源文件中定義一次並初始化:
const int MAX_LENGTH=1024;
然後每一個使用它的編譯單元#include上述頭文件即可

兩種方法的比較:

優點:
方法一:                              方法二:

維護方便                           (1)節約存儲,每一個編譯單元訪問都是這個唯一的定義。
                                          (2)修改初值後只需重新編譯定義所在編譯單元即可,影響面很小。


缺點:
         方法一:                                                                                              方法二:

(1)如果修改常量初值,則將影響多個                            如果要改變初值,要改變源文件
     編譯單元,所有受影響的編譯單元              
     必須重新編譯。
(2)每一個符號常量在每一個包含了它們的
     編譯單元內都存在一份獨立的拷貝內容,
     每個編譯單元訪問的就是各自的拷貝內容,
     因此浪費存儲空間


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章