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

2021-10-11 10:57:52 字數 979 閱讀 9118

在c/c++語言中,變數、函式、結構體的定義和宣告這些過程是分離的。宣告通常放在標頭檔案中,為了防止重複宣告,就需要保證標頭檔案的內容只被包含一次。。

功能

為了避免同乙個標頭檔案被包含(include)多次

1.#ifndef巨集定義

#ifndef,#endif是c/c++語言中的巨集定義,通過巨集定義避免檔案多次編譯。所以在所有支援c++語言的編譯器上都是有效的,如果寫的程式要跨平台,最好使用這種方式。

#ifndef _file_h_

#define _ile_h_..

..//宣告語句

#endif

優點

缺點

2. #pragma once方式

是乙個比較常用的c/c++預處理指令,只要在標頭檔案的最開始加入這條預處理指令,就能夠保證標頭檔案只被編譯一次。

#pragma once
優點

缺點

3.總結

使用 #ifndef,編譯器每次看到 #include 這個檔案都需要讀入檔案,解析**,效率低; 而使用 #pragma once 編譯器根本不會重複開啟檔案, 大大提高效率。

使用 #pragma once 的**簡潔;#ifndef 定義如下:#ifndef…#define…#endif

#pragma once 針對檔案只編譯一次; #ifndef…#define…#endif 是針對檔案中的某乙個標號而言的,防止三個指令間包含的內容的重複性處理,更靈活。

#pragma once 依賴於編譯器,可移植性較差; #ifndef…#define…#endif 編譯器都能使用,可移植性更高。

C語言標頭檔案條件編譯避免重複引用

條件編譯 條件編譯屬於三種巨集定義中的一種,條件指示符的最主要目的是防止標頭檔案的重複包含和編譯,例如 乙個c檔案包含同乙個h檔案多次,如果不加 ifndef巨集定義,會出現變數重複定義的錯誤。指令 用途 空指令,無任何效果 include 包含乙個源 檔案 define 定義巨集 undef 取消...

C語言標頭檔案條件編譯避免重複引用

c語言標頭檔案條件編譯避免重複引用 原創xr zy1110 最後發布於2016 04 14 17 35 54 閱讀數 4849 收藏 展開條件編譯 條件編譯屬於三種巨集定義中的一種,條件指示符的最主要目的是防止標頭檔案的重複包含和編譯,例如 乙個c檔案包含同乙個 件多次,如果不加 ifndef巨集定...

C 避免重複包含標頭檔案方法

為了避免同乙個標頭檔案被包含 include 多次,c c 中有兩種巨集實現方式 一種是 ifndef方式 另一種是 pragma once方式。在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別。但兩者仍然有一些細微的區別。方式一 ifndefsomefile h definesomefile ...