天天看點

頭檔案 代碼檔案

     在學習C++之前我們需要了解C++檔案結構。C++的代碼檔案有頭檔案(*.h)和代碼檔案(*.cpp)之分。兩者合起來我們稱為單元檔案。實際上 編譯器也是一個cpp一個cpp檔案的編譯然後再連接配接各個編譯檔案的結果檔案(C++編譯過程會在以後篇章介紹)。C++/C程式的頭檔案以“.h”為後 綴,C程式的定義檔案以“.c”為字尾,C++程式的定義檔案通常以“.cpp”為字尾(也有一些系統以“.cc”或“.cxx”為字尾)。

     大多數情況下頭檔案和代碼檔案是一一對應的。在頭檔案裡主要寫一些函數(全局函數),變量(全局變量),資料類型的定義(其實就是使用者自定義類,類中的函數實作一般在代碼檔案中)等聲明。這樣可以在多個代碼檔案中共享這些函數,變量和資料類型的定義等。

   頭檔案

   頭檔案是不被編譯的,cpp中引用頭檔案實際上是當預編譯的時候将頭檔案中的内容插入到cpp檔案中。是以變量的定義、函數的定義不要寫到頭檔案中。因為頭檔案很可能要被多 個cpp引用。當連接配接的時候可能會出現重複定義的情況。

有2種常見的錯誤:

1>同一編譯單元的頭檔案重複引用,可能會出現重複定義

2>不同編譯單元引用同一頭檔案,連結時發現重複定義

1、為了防止頭檔案被重複引用,應當使用 #ifndef  #define ... #endif 結構

    但是是不是所有的頭檔案加上這個,能防止出現重複引用導緻重複定義的錯誤呢?

    答案是否定的。在不同的編譯單元引用同一頭檔案的時候,還是會出現重複定義的錯誤。

   這種結構隻能防止第一種情況下的錯誤。

2、用 #include  <test>或者<test.h>格式來引用标準庫的頭檔案(編譯器将從标準庫目錄開始搜尋)。

     用 #include “test”或者"test.h" 格式來引用非标準庫的頭檔案(編譯器将從使用者的工作目錄開始搜尋)。

ps:VC中編繹C和C++是分大小寫的

繼續閱讀