關於全局變量和全局函數的聲明

申明全局變量,全局函數一定要在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 可以解決問題是因爲

內聯函數與普通函數的不同就是在於函數的定義部分的執行方式。內聯函數是在執行時直接將定義

部分的代碼複製過去執行,而普通的是進入到該函數定義部分執行,然後反還結果。前者速度快但

比較佔用內容,後面速度慢但省空間,因爲函數在執行完後所用的內存就會自動被系統收回。

不會被編輯器認爲是重複定義函數.

發佈了25 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章