標頭檔案防衛式宣告

2021-10-10 19:53:41 字數 936 閱讀 1483

有3個檔案分別是text1.h text2.h text.c

text1.h

int a=

1;

text2.h

#include

"text1.h"

int b =

2;

text.c

#include

"text1.h"

#include

"text2.h"

#include

intmain()

//報錯 會提示a重複定義

以上text.c可以翻譯為如下

int a=1;

//#include "text1.h"

int b=2;

//#include "text2.h"

int a=1;

#include

intmain()

標頭檔案中常用到

#ifdef, ifndef		條件編譯

#ifndef 識別符號

//當識別符號沒有定義過(沒有用#define定義過),則對程式進行編譯

//程式段

#endif

以上text1.h與text2.h可以改寫為如下

#ifdef __text1__

#ifndef __text1__

int a=1;

#endif

#ifdef __text2__

#ifndef __text2__

int b=2;

#endif

這樣#inlcude就沒問題了,但是通常識別符號會後面會加個h__texe1__h_

防衛式宣告

標準格式 在標頭檔案中寫 ifndef define endif 通過閱讀 geekband c 學習筆記 防衛式宣告的背後 發現編譯器對頭檔案進行了以下預處理 編譯器還會做很多其他事情,但是從第四條可以看出,會將標頭檔案中寫的 直接複製進檔案。那麼可以想象,如果有多份標頭檔案均不進行防衛式宣告,均...

c語言標頭檔案和原始檔 C語言標頭檔案防衛式宣告

c語言一般提供三種預處理功能 巨集處理 檔案包含 條件編譯。標頭檔案防衛式申明中會用到條件編譯中 ifndef define endif的用法。所以,首先價紹下條件編譯。一般情況下,在生成可執行檔案的過程中,源程式檔案中的所有 行都進行編譯,但是在一些跨作業系統的情況下,要求 既能在windows下...

標頭檔案如何避免重複宣告

向c語言專案graph1中新增graph2.h這樣乙個標頭檔案。在 clion 中我們會發現,在標頭檔案graph2.h中,會自動生成以下三行 ifndef graph1 graph2 h define graph1 graph2 h part1 endif part2這三行 主要作用是 防止該標頭...