有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這三行 主要作用是 防止該標頭...