c 中標頭檔案的作用

2021-10-13 09:39:05 字數 873 閱讀 2619

標頭檔案,其實它的內容跟 .cpp 檔案中的內容是一樣的,都是 c++ 的源**

但標頭檔案不用被編譯。

我們把所有的函式宣告全部放進乙個標頭檔案中,當某乙個 .cpp 原始檔需要它們時,它們就可以通過乙個巨集命令 「#include」 包含進這個 .cpp 檔案中,從而把它們的內容合併到 .cpp 檔案中去

當 .cpp 檔案被編譯時,這些被包含進去的 .h 檔案的作用便發揮了。

#include 是乙個來自 c 語言的巨集命令,它在編譯器進行編譯之前,即在預編譯的時候就會起作用。

#include 的作用是把它後面所寫的那個檔案的內容,完完整整地、一字不改地包含到當前的檔案中來。

它本身是沒有其它任何作用與副功能的,它的作用就是把每乙個它出現的地方,替換成它後面所寫的那個檔案的內容。就是簡單的文字替換

因此,main.cpp 檔案中的第一句(#include"math.h"),在編譯之前就會被替換成 math.h 檔案的內容。

.h標頭檔案中,只能存在變數或者函式的宣告,而不要放定義。即,只能在標頭檔案中寫形如:extern int a; 和 void f(); 的句子。這些才是宣告。如果寫上 inta;或者 void f() {} 這樣的句子,那麼一旦這個標頭檔案被兩個或兩個以上的 .cpp 檔案包含的話,編譯器會立馬報錯。

標頭檔案中應該只放變數和函式的宣告,而不能放它們的定義。因為乙個標頭檔案的內容實際上是會被引入到多個不同的 .cpp 檔案中的,並且它們都會被編譯。放宣告當然沒事,如果放了定義,那麼也就相當於在多個檔案**現了對於乙個符號(變數或函式)的定義,縱然這些定義都是相同的,但對於編譯器來說,這樣做不合法。

C 中標頭檔案的問題

在編c 時遇到的問題,庫函式strlen,strcmp的標頭檔案問題 include include include using namespace std 兩個都能正確編譯執行,string也是存在的,都是共存的 今天用到randomize 發現沒有了,查了一下,原來randomize 和rand...

C中標頭檔案的使用

最近在寫作業系統的時候,學習了作者的c 中標頭檔案的布置風格,記錄於此。可以有乙個檔案專門存放全域性變數 也有可能是一類檔案 然後對全域性變數的標頭檔案宣告,使用extern關鍵字。普通c檔案對應的標頭檔案.h中,主要存放結構體和巨集。能定義成巨集的盡量到相應的標頭檔案中定義成巨集,這有利於 的可讀...

C中標頭檔案的使用

最近在寫作業系統的時候,學習了作者的c 中標頭檔案的布置風格,記錄於此。可以有乙個檔案專門存放全域性變數 也有可能是一類檔案 然後對全域性變數的標頭檔案宣告,使用extern關鍵字。普通c檔案對應的標頭檔案.h中,主要存放結構體和巨集。能定義成巨集的盡量到相應的標頭檔案中定義成巨集,這有利於 的可讀...