正確使用c語言中的頭文件


我們在使用c編程的時候經常會遇到頭文件,前段時間我自己做了個小項目的時候,也遇到了關於頭文件的問題。

預處理器發現#include 指令后,就會尋找后跟的文件名並把這個文件包含的內容包含到當前文件中。被包含文件的文本將替換源文件中的#include 指令,就像您把被包含文件中的全部內容鍵入到源文件的特定位置一樣(摘抄自 cprimer plus)。簡單來說就是,編譯器把 #include 后跟隨的文件內容都寫到源文件中,寫的位置就是 #include放的位置。

#include指令有兩種形式

1#include<stdio.h>  文件名放在尖括號里面

unix系統中,尖括號告訴預處理器在一個活多個標准的目錄中尋找文件。如果做開發,比如,我使用keilmdk,編譯器也遵循這樣的原則,放在默認目錄中,不用人工處理。

2#includemystuff.h 文件名放在雙引號中

有兩種形式:

<1>:#includehot.h收索當前的工作目錄

 <2>:#include/usr/biff/p.h收索/usr/biff所在的目錄

對於unix系統,使用雙引號意味着先搜索本地目錄,但是具體收索那個牡蠣依賴於編譯器。有些編譯器收索源代碼所在的目錄,還有些收索工程文件所在的目錄。

對於我使用的mdk,我是將文件所在的文件夾添加到工程能夠搜索的目錄中。

在寫c程序的時候,我們經常會把函數寫在一個.c文件中,然后在另外的.c文件中引用函數,使得整個程序更加整潔,方便。

但是在頭文件使用的時候經常出現重定義的錯誤,我使用的解決辦法是:

首先把hello.c拆分為兩個文件hello.chello.hhello.h中包含hello.c所需要的頭文件和.c中出現的函數名。例如在hello.c中有

void add int x,int y

{

z=x+y;

return y;

}

就在hello.h中添加 void add(int x,int y);hello.c所需的頭文件#include<stdio.h>

在拆分后的hello.c添加#includehello.h,然后把hello.chello.h放在同一個文件夾即可。當有文件需要add函數時直接在頭文件中添加#includehello.h即可。

當多個文件引用hello.h時候,例如當plus.c中引用hello.cjump.c需要使用plus.cadd.c。就會出現重定義的錯誤(引用hello.cplusz指將hello.hplus.h頭文件添加到jump.c中)

這時候就引用防重定義。假設要放重引用hello.h  在開頭添加

#ifndef __HELLO_H__

#define __HELLO_H__

結尾添加

#endif

既把你要重定義的文件的開頭添加

#ifndef __HELLO_H__

#define __HELLO_H__

HELLO就是你文件的名字改成大寫 H就是你文件類型

再在結尾加上

#endif

即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM