兩種防止標頭檔案二次編譯的方法

2021-07-02 14:40:40 字數 878 閱讀 9291

#ifndef是最早期使用的方法,是基於語言的巨集定義名字不能衝突的前提下的。

優點:這種方法不僅能保證同乙個標頭檔案不會被包含兩次,也可以保證內容完全相同的兩個檔案也只能被包含一次。

缺點:你的#ifndef 後面跟的巨集名字和你程式中的其他巨集名字發生了」撞車「,那麼會出現嚴重後果

例子:file1.h中

#define book_h   //巨集名

現在又有乙個檔案 book.h 裡面使用了巨集定義方式防止標頭檔案二次編譯

#ifndef book_h

#define book_h

//  codes

#endif

下面是你的主函式所在檔案內容

#include"fil1.h"

#include"book.h"   //這兩個都是你自己的標頭檔案

#include<........>

..................

預編譯階段把file1檔案展開,就得到了巨集 book_h,在處理book.h檔案時就發現book_h這個巨集已經存在了,就不會包含book.h標頭檔案了,這就是弊端所在了。

缺點:(1)微軟編譯器獨有,因為他不支援跨平台。如果你想寫跨平台的**,最好使用上一種。

(2)假如你的某乙個標頭檔案有多份拷貝,這些檔案雖然在邏輯上都是一樣的,但在物理上他們卻是不同的,所以當你把這些檔案包含的時候,就會發現真的都包含進來了,然後就是編譯錯誤了。

優點:當物理上的同一檔案被巢狀包含的時候,使用第一種方法預處理會每一次開啟該檔案做判斷的,但是第二種方法則不會,所以在此#pragma once 會更快些。

防止標頭檔案二次編譯的兩種方法

1 ifndef ifndef是最早期使用的方法,是基於語言的巨集定義名字不能衝突的前提下的。優點 這種方法不僅能保證同乙個標頭檔案不會被包含兩次,也可以保證內容完全相同的兩個檔案也只能被包含一次。缺點 你的 ifndef 後面跟的巨集名字和你程式中的其他巨集名字發生了 撞車 那麼會出現嚴重後果 例...

防止標頭檔案二次編譯

一 下劃線 屬於程式設計風格的內容,對程式沒有影響。不用下劃線也可以,用幾個下劃線也由個人習慣。二 其實質是乙個巨集名。由此我們可以防止發生重複定義或宣告。假設你的頭檔名為head.h,根據習慣,我們宣告乙個巨集head h,對應這個標頭檔案,在標頭檔案中開始的地方和結尾的地方加上 對head h的...

C 兩種避免標頭檔案重複編譯使用的方法

在c c 語言中,變數 函式 結構體的定義和宣告這些過程是分離的。宣告通常放在標頭檔案中,為了防止重複宣告,就需要保證標頭檔案的內容只被包含一次。功能 為了避免同乙個標頭檔案被包含 include 多次 1.ifndef巨集定義 ifndef,endif是c c 語言中的巨集定義,通過巨集定義避免檔...