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

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

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

#include指令有兩種形式spa

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

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

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

有兩種形式:io

<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

便可。

相關文章
相關標籤/搜索