C51中頭文件的寫(xiě)法
一、頭文件位置
#include xxx.h> 優(yōu)先在系統默認路徑查找頭文件
#include“xxx.h”有現在項目路徑查找頭文件
二、#ifndef和#endif
通常形式為
#ifndef _xxxx_h_
#define _xxxx_h_
.........(頭文件具體內容)
#endif
這樣的寫(xiě)法表示,如果_xxxx_h_還沒(méi)有被定義,那么頭文件內容將被執行,如果已經(jīng)定義過(guò)了,那么頭文件內容就不執行了。作用在于,如果某頭文件被不同c文件同時(shí)調用,那么里面的內容不至于因為重復定義而出錯,因為不管調用幾次頭文件,其內容只有在第一次出現時(shí)被執行,同時(shí)定義一個(gè)_xxxx_h_,以后再次調用時(shí),頭文件內容被忽略。
三、函數和宏
假設有如下文件 main.c aaa.c aaa.h
其中,,aaa.c里面有一個(gè)宏X,一個(gè)函數Y,且函數Y中使用了X
aaa.h里面申明了函數Y
main.c里包含了aaa.h文件,調用了函數Y,但沒(méi)有定義宏X
那么,編譯時(shí)不會(huì )出錯,這表示,函數Y中出現宏X時(shí),它會(huì )在自身所在的c文件,即aaa.c里面查找宏
變化1:如上情況不變,但是在main.c里面將整個(gè)函數Y重新寫(xiě)一遍
編譯出錯,提示 “error C202: 'X': undefined identifier”
說(shuō)明此時(shí)函數Y在main.c文件中找不到宏X,因此提示為未定義的符號
變化2:將aaa.c中的宏剪切到main.c,其余情況不變
編譯出錯,同樣提示“error C202: 'X': undefined identifier”
結論: 函數中如果出現宏,那么該函數能且只能在其自身所在的c文件中查找該宏,如果二者不在同個(gè)c文件,必然出錯
評論