說說C 的標頭檔案

2021-10-04 13:52:44 字數 656 閱讀 1315

這次講講c++的標頭檔案吧,第乙個問題是標頭檔案的內部到底是什麼?其實本質上來說標頭檔案是不存在,當程式在進行編譯的時候,其實第一步就把頭檔案裡面所有的內容直接拷貝到原始檔裡面去了,這樣標頭檔案其實就消失了。因為這個拷貝就會導致了第二個問題,如果出現多重依賴的關係,會不會出現編譯不通過。答案是會的。比如a.h 定義了乙個結構體 stuserinfo,b.h包含了a.h。然後a.cpp又同時包含了a.h和b.h,那麼結構體stuserinfo就會被多重定義編譯就會報錯。解決辦法一般是這樣的,在標頭檔案裡面加上如下的**:

以a.h為例:

#ifndef _a_h

#define _a_h

typedef struct stuserinfo

#endif

這樣在就不會出現重複定義的問題了。其實還有乙個需要注意的,一般注重程式設計規範的公司是在**裡面是不允許.h再包含.h的。同樣.cpp包含其他的cpp更加不行。

最後說說很多標頭檔案咋在開始都會加上extern "c"{},其實這個的意思就是按照c語言的方式去編譯而不是c++的方式去編譯。因為在編譯之後裡面的函式會被修改名字,比如 float f(int a,char b)在c++的編譯器裡面就會變成_f_int_char以來支援過載,但是在c裡面就會是_f。所以有這個的不一樣就是導致聯結器無法鏈結到正確的函式。

好了,今天就到這裡吧。

C 標頭檔案與C標頭檔案

include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料型別最值常量 include 定義本地化函式 include ...

C 標頭檔案與C標頭檔案(math string)

math.h 是c語言中數學函式庫,包含我們常用的一些數學計算上會使用到的函式。c 中有對應相同作用的標頭檔案 cmath 當然c 中兩個標頭檔案都可以使用,c 向c相容。1.include c語言的標頭檔案,包含比如strcpy之類的字串處理函式。注意c語言裡沒有string類的概念,不要弄混。2...

c 的標頭檔案

1 傳統 c include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料型別最值常量 include 定義本地化函式 i...