include h 和include 。c的区别

首先引出问题:

        keil编写c程序,有一些器件的使用,写成文件之后,再include进去,用起来比较方便。

      写成头文件,再  include “xxxx.h”
      和  写成源文件,再  include “xxxx.c”

      调试了都可以,但我不知  这从 原理 上有什么区别?

问题解答:

     

(1)#include 指令

该指令指示编译器将xxx.xxx文件的全部内容插入此处,也就说 #include等效于复制、粘贴, 另外编译器会编译.c文件,不会编译.h文件

举例说明:

      假设有a.c和b.c,b.c中include a.c。实际相当于直接把a.c插入b.c中include的位置,编译的是b.c

     假设有a.c,a.h和b.c,b.c中include a.h。一般.h写的都只是声明(函数声明,外部变量声明等)。
     此时首先是将a.h插入b.c中include的位置。然后编译a.c,输出a.o,编译b.c,输出b.o。
     编译时由于b.c中引入a.h,所以对于a中的函数或变量有声明,据此编译器认为此函数或变量在某个文件中是存在的,便不会报错。
     最后再进行链接,输出目标文件。

     假如是个大工程,都采用include c文件的方式,某个c文件修改过后,编译时需要全部重新编译。如果引入的是h文件,没做修改的部分便不需要再次编译。    
  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章