申明全局變量,全局函數一定要在cpp中申明
其他類引用該全局變量就include該cpp的h檔案
然後extern一下就好了
否則容易出現該重複定義錯誤
這個"容易"是如何解釋的呢?
例如A.h中如果申明了全局變量int Global;
在B.h中include "A.h"
extern int Global;
則你include A.h相當于把A.h中全局變量的申明也include進來了,編譯器就會認為是重複定義
是以全局變量和函數申明一定要在cpp中
當.h檔案裡有函數實作時
VS2005編譯器報錯誤 fatal error LNK1169: 找到一個或多個多重定義的符号
解決方法
1.在.h裡的函數聲明前加 inline
2.在項目->屬性->連結器->指令行->附加選項中加 /force
注: 之是以 在.h裡的函數聲明前加 inline 可以解決問題是因為
内聯函數與普通函數的不同就是在于函數的定義部分的執行方式。内聯函數是在執行時直接将定義
部分的代碼複制過去執行,而普通的是進入到該函數定義部分執行,然後反還結果。前者速度快但
比較占用内容,後面速度慢但省空間,因為函數在執行完後所用的記憶體就會自動被系統收回。
不會被編輯器認為是重複定義函數.