程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++ 頭文件重定義解決心得

c++ 頭文件重定義解決心得

編輯:C++入門知識

    最近在做開發的時候用到很多自己編寫的頭文件,這樣很容易出現 error LNK2005,經過查閱資料,發現網上很多資料都是轉載同一個地方的,而當時閱讀時一些不明白的地方費了一番周折,不過最終把問題解決了。

      網上也有很多五花八門的解決方案,這裡總結一種可行的。開發環境為 VS 2008。

      首先,盡量保證在頭文件中只聲明變量和函數,不要定義。這個很重要,不然鏈接時候會出現麻煩。不僅是變量不定義,函數也不要出現定義,但可以出現聲明。

    其次,如果以上問題解決後,還有 error LNK2005,那就在每個頭文件中作如下修改:

          1、在頭文件的開頭加入

                           #ifndef _HEAD_H_     //如果沒有定義這個宏
                           #define _HEAD_H_     //定義這個宏

          2、在頭文件末尾加入

                           #endif

           這樣加入之後的頭文件內容為:

                        #ifndef _HEAD_H_     //如果沒有定義這個宏
                        #define _HEAD_H_     //定義這個宏

                        。。。。。//此處為頭文件原來的內容


                         #endif

          說明:加入上述信息的目的是告訴鏈接程序,該頭文件只能被鏈接一次,這樣就可以避免重定義問題。對於宏名字,(此處為 _HEAD_H_)選取的問題,要保證所有頭文件中的名字不同,不然鏈接程序定義具有相同名字的某個頭文件之後,所有含有相同宏名字的頭文件都不會再被鏈接。通常的一個命名方法是,把頭文件名全部大寫,然後前後加上 _ ,再用 _ 替換 . ,如頭文件為 title.h,則命名為: _TITIE_H_

        經過這兩步,基本error LNK 2005 就解決了。

       僅供初學者參考,如有問題請留言。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved