include是怎麼樣工作的?

2021-09-08 08:51:54 字數 1530 閱讀 4476

大多數園友可能對「#include」比較熟悉,因為我們寫c/c++程式的時候都會寫的字串之一,但是它是具體怎麼工作的?或者它的原理是什麼呢?可能不太熟悉,也有可能沒有去關心過。我們只關心程式能否正確執行,或者程式怎麼實現等等一些問題。

這裡筆者就為介紹下我們熟悉又不太熟悉的「#include」,首先我們了解下c/c++標頭檔案。

標頭檔案為相關宣告提供了乙個集中存在的位置。標頭檔案一般包含類的定義,extern變數宣告與函式宣告。注意這裡宣告與定義的區別:它們最本質的區別是定義只可以出現一次,宣告可以出現多次。宣告不分配空間,而定義是要分配空間的。標頭檔案正確使用可以保證所有檔案使用給定實體的同一宣告;當宣告需要修改時,只有標頭檔案需要更新。

標頭檔案還可以定義:在編譯的時候就已知道其值的cosnt物件和inline 函式。在標頭檔案中定義上述實體,是因為編譯器需要它們的定義來產生**。例如:為了產生能定義或使用類的物件**,編譯器需要知道組成該型別的資料成員,也需要知道對應的函式。

在c++中,有些地方需要放置常量表示式。例如:列舉成員的初始化必須是常量表示式。常量表示式是編譯器在編譯時就能夠在計算出結果的表示式。當const整型變數通過常量表示式自我初始化時,這個const整型變數就可能是常量表示式。而const變數要成為常量表示式,初始化必須為編譯器可見。為了能夠讓多個檔案使用相同的常量值,const變數和它的初始化必須是每個檔案都可見的。所以將其定義放到標頭檔案中,無論const常量何時使用,編譯器都能知道其初始化。

#include是怎麼樣工作的?

#include設施是c++預處理器的一部分。

預處理器處理程式的源**,是在編譯器之前執行。

#include只接受乙個引數:頭檔名。

預處理器用指定的標頭檔案的內容替代每個include。

我們自己的標頭檔案儲存在檔案中。系統的標頭檔案可能用特定於編譯器的更高效的格式儲存。

標頭檔案經常#include其他標頭檔案。標頭檔案定義的實體經常使用在其他檔案的設施。所以設計的標頭檔案時,應使其可以多次包含在同一原始檔中。我們必須保證包含同一標頭檔案不會引起該標頭檔案定義的類和物件被多次定義。使得標頭檔案安全的通過做法,使用預處理器定義標頭檔案保護符。

什麼是標頭檔案保護符?

看看下面內容大家就會明白了

在編寫標頭檔案之前,我們需要引入一些額外的預處理器設施。預處理器允許我們自定義變數。為了避免名字衝突,預處理器變數經常用全大寫字母表示。預處理變數有兩種狀態:已定義或未定義。

#ifndef begein_h

#define begein_h

//定義一些類或者定義函式

#endif

如果沒有兩個標頭檔案定義和使用相同的預處理器變數,那麼就沒有問題。如果出現上述情況,可以用定義在標頭檔案裡實體類來命名預處理器變數來避免預處理變數重名問題。

#include <>與#include " "區別

如果頭檔名在<>中,就會被認為是標準標頭檔案。編譯器會在預定義的位置查詢該標頭檔案,如果是""就認為它是非系統標頭檔案,非系統檔案查詢通常開始於原始檔所在路徑。

include是怎麼樣工作的?

大多數園友可能對 include 比較熟悉,因為我們寫c c 程式的時候都會寫的字串之一,但是它是具體怎麼工作的?或者它的原理是什麼呢?可能不太熟悉,也有可能沒有去關心過。我們只關心程式能否正確執行,或者程式怎麼實現等等一些問題。這裡筆者就為介紹下我們熟悉又不太熟悉的 include 首先我們了解下...

include是怎麼樣工作的?

大多數園友可能對 include 比較熟悉,因為我們寫c c 程式的時候都會寫的字串之一,但是它是具體怎麼工作的?或者它的原理是什麼呢?可能不太熟悉,也有可能沒有去關心過。我們只關心程式能否正確執行,或者程式怎麼實現等等一些問題。這裡筆者就為介紹下我們熟悉又不太熟悉的 include 首先我們了解下...

小白 程式設計工作怎麼樣

自我感覺,在底層的程式設計工作類似於工地小工,就是搬磚碼農。目前程式設計工作的工作環境大部分是加班多,工作時間長,睡眠不足,工作強度大,內容單一。表面上好像高薪,實際上你付出的也比較多,而且對於人的健康,人的程式設計以外的思維和見識增長都有一定的傷害。所以,除非是有興趣,否則長時間枯燥單一的工作會讓...