在開發大型項目時,我們常常需要將一份源碼分成多個源文件來進行編寫,這樣可以方便后期的維護。下面就介紹如何從一個源文件里調用另一個源文件的函數。
在源文件A1.c中調用A2.c 中的函數有兩種方法:
1.在A2.c中有完整的函數定義,在A1.c中添加一下要用到的函數原型(聲明)就可以了,例如:
- 在A2.c中:有函數void A2(){...};。
- 在A1.c中:在文件前頭增加一行:void A2();就可以了。
2.把A2.c中完整定義的函數的原型,寫到一個A2.h文件中,然后在A1.c的文件頭增加#include "A2.h"就可以了。
以上兩種方法,在A1.c中都可以正常的調用,就跟在A2.c中調用一樣。
其實函數默認是外部的,只要在其他文件中聲明就能使用;但是注意如果在前面加上static,就只能在本文件中使用了,不能再被其他的文件調用。
怎樣編寫頭文件
1.一個.h文件要 對應有一個.c文件,這樣鏈接器就可以調用這個文件里的函數。比如a.h 和 a.c。
在.h文件中:
#ifndef __A_H_ #define __A_H_ #include<stdio.h> void trans2(double B) ; double trans1() ; #endif
2.把相應的函數定義寫在.c文件中。這里要強調一點:要加上#include ".h",這個一般作為一種工程規范。因為如果.c文件中的函數也需要調用同個.c中的其它函數,那么這個.c往往會include對應的.h,這樣就不需要為聲明和調用順序而發愁了。比如頭文件里進行了變量的聲明,這個時候對應的.c文件是一定要加上這個頭文件的。
3.再在其他的main.c文件開頭添加#include "a.h"。