C++頭文件中聲明全局變量要注意的幾點


  我們知道,在C++(非C語言)中,const限定符對默認存儲類型稍有影響。在默認情況下,全局變量的鏈接性為外部的,但是const全局變量的鏈接性為內部的,也就是說,在C++中全局變量const定義就像是用了static說明符一樣。

  因此,可以將const常量定義在頭文件中供工程中的多個其他文件包含引用,並且編譯時候不會產生變量重復定義的錯誤,當然也可以使用#define宏定義。

  一般常量定義並沒有問題。但是,如果const要限定的時指針就要特別注意。以字符數組為例,請看下面代碼:

#ifndef CONST_HEADER_H_ 
#define CONST_HEADER_H_  
  
const char* CONST_STRING = "WinkJie";          // 錯誤!指針 CONST_STRING 並非 const 常量,所以該頭文件  
                                             //      被多個文件包含時,會有變量重復定義的編譯錯誤。  
const char* const CONST_STRING = "WinkJie";  // 正確,CONST_STRING 是指向常量的常量指針。  
const char CONST_STRING[] = "WinkJie";       // 正確,數組名是一個常量指針
                                           //CONST_STRING 是 const char [7] 類型。 
char* const CONST_STRING = "WinkJie";      // 正確,CONST_STRING 是常量指針。  
 
namespace // 正確  
{  
    char CONST_STRING[] = "WinkJie";   
}  
  
namespace // 正確  
{  
    char* CONST_STRING = "WinkJie";   
}  
  
namespace // 正確  
{  
    const char* CONST_STRING = "WinkJie";   
}  
#endif // CONST_HEADER_H_ 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM