C++頭文件講解


備注:由於本人C++水平有限,以下內容僅僅是參考。希望不要誤導大家,有問題請給我信息。

     由於之前學習C#的先入為主的感覺,導致學習C++有很多問題一開始沒有想明白。

     在學習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" 格式來引用非標准庫的頭文件(編譯器將從用戶的工作目錄開始搜索)。

3、C++ 標准頭文件與C頭文件區別與聯系以及C風格字符串

接下來講解:C++ 宏和預編譯 預編譯頭

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

靜靜的努力尋找屬於自己的

 我用 菊子曰寫的這篇文章!你也試試?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM