標頭檔案中不可以放變數的定義

2022-03-19 10:49:03 字數 401 閱讀 4267

注意標頭檔案中不可以放變數的定義!!!一般情況下標頭檔案中只放變數的宣告,因為標頭檔案

要被其他檔案包含(即#include),如果把定義放到標頭檔案的話,就不能避免多次定義變數,

c++不允許多次定義變數,乙個程式中對指定變數的定義只有一次,宣告可以無數次。

不過有三個例外,一下三中實體的定義也可放到標頭檔案中  

1.值在編譯時就已知的const 變數的定義可以放到標頭檔案中 如:const int num(10);

2.類的定義可以放到標頭檔案中

3.inline 函式

4.c++11的新特性 constexpre int num(10) 這個應該是可以的。

這三個實體可以定義在多個原始檔中,只要在每個原始檔中的定義相同。

保護巨集不可以解決變數重複定義的問題

今天繼續寫實驗班的程式,出了問題,這就引出了乙個很重要的問題。之前不是很懂的。今天終於碰到了。情景 你建了乙個工程,包含兩個 cpp 檔案,乙個標頭檔案 乙個錯誤的認識是保護巨集可以防止變數被重複定義。是這樣嗎?a.cpp include include zmx.h using namespace ...

標頭檔案中定義變數

在標頭檔案中定義了乙個變數,若另乙個檔案再 int 變數名 則會再產生乙個相同變數的定義,在linux環境中編譯時會發生如 menu.o sbss 0x0 multiple definition of is refresh living time thread created main.o sbss...

CSS中可以和不可以繼承的屬性

一 無繼承性的屬性 1 display 規定元素應該生成的框的型別 2 文字屬性 vertical align 垂直文字對齊 text decoration 規定新增到文字的裝飾 text shadow 文字陰影效果 white space 空白符的處理 unicode bidi 設定文字的方向 3...