C语言头文件的作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言头文件的作用相关的知识,希望对你有一定的参考价值。

头文件只是说明了函数,并没有给出函数的具体程序。那么执行的时候是如何执行的呢?是C语言中自带的么?比如说if语句。

兄弟,对于头文件,有以下几个好处,你可以参考下

1,头文件可以定义所用的函数列表,方便查阅你可以调用的函数;
2,头文件可以定义很多宏定义,就是一些全局静态变量的定义,在这样的情况下,只要修改头文件的内容,程序就可以做相应的修改,不用亲自跑到繁琐的代码内去搜索。
3,头文件只是声明,不占内存空间,要知道其执行过程,要看你头文件所申明的函数是在哪个.c文件里定义的,才知道。
4,他并不是C自带的,可以不用。
5,调用了头文件,就等于赋予了调用某些函数的权限,如果你要算一个数的N次方,就要调用Pow()函数,而这个函数是定义在math.c里面的,要用这个函数,就必需调用math.h这个头文件。

兄弟,祝你好运
参考技术A 主要用于类型检查,检查函数的参数及返回类型是否有错(头文件里面包含声明,与程序文件里面的调用应该保持一致)。至于函数的实现是在函数库里面,在link连接阶段复制到你的程序编译而成的obj文件里面。这样你的程序才能运行。就像tc里面的include目录里的文件就是头文件,lib目录里面放的就是其对应的实现。 参考技术B 比如#include<stdio.h>在编译时会把stdio.h这个文件的内容替换掉#include<stdio.h> 目的是为了编程时方便吧,你也可以自己编写头文件。这样你只要把它包函在这个代码就行了,这样很方便、 参考技术C 你使用的函数就在头文件指定的文件里

你写了这个头文件 才能使用里面的函数

比如:sthio.h 就包含 printf()
math.h 包含 sqrt()
参考技术D #include<stdio.>系统规定必须有的,函数是从main()主函数开始的执行的!

c头文件(.h)的作用

C语言的著作中,至今还没发现把.h文件的用法写的透彻的。在实际应用中也只能依葫芦画瓢,只知其然不知其所以然,甚是郁闷!闲来无事,便将搜集网络的相关内容整理一下,以便加深自己的理解

理论概述:
.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。

1)h文件作用:

     1.方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;

  2. 使函数的作用域从函数声明的位置开始,而不是函数定义的位置(实践总结)

  3 .提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)


2)h文件里应该有什么:常量,结构,类型定义,函数,变量申明。

3)h文件不应该有什么:变量定义函数定义。

4)extern问题:
  1.对于变量需要extern

  2.对于函数不需要因为函数的缺省状态是extern.如果一个函数要改变为只在文件内可见,static

5)include包含问题:虽然申明和类型定义可以重复,不过推荐使用条件编译。
  #ifndef _FILENAME_H, 
  #define _FILENAME_H
  ……

  #endif

实践总结

先看最简单的程序:hello world

  1. 1 /*test1.c*/
  2. 2 main()
  3. 3 {
  4. 4   printf("Hello World! ");
  5. 5 }

注意,test1中并没有.h文件,编译可以顺利通过。把程序做下改动,下面这个:

  1. 1 /*test2.c*/
  2. 2 prtstr()
  3. 3 {
  4. 4   printf("Hello World! ");
  5. 5 }
  6. 6 main()
  7. 7 {
  8. 8 prtstr();
  9. 9 }


test2.c中还是没有.h文件,编译仍可以顺利通过。再把程序改动下:

  1. 1 /*test3.c*/
  2. 2 main()
  3. 3 {
  4. 4   prtstr();
  5. 5 }
  6. 6
  7. 7 prtstr()
  8. 8 {
  9. 9   printf("Hello World! ");
  10. 10 }

test3.c中仍然没有.h文件,编译失败_。难道函数的位置影响编译的过程?现在我们来熟悉一下C语言中的概念:作用域。

  我们在这里只讲述与.h文件相关的顶层作用域顶层作用域就是从声明点延伸到源程序文本结束prtstr()这个函数来说,他没有单独的声明,只有定义,那么就从他定义的行开始,到文件结束也就是说,test2.cmain()函数的引用点上,已经是他的作用域。 test3.cmain()函数的引用点上,还不是他的作用域,所以会编译出错这种情况怎么办呢有两种方法 ,一个就是让我们回到test2.c, 顺序对我们来说没什么谁先谁后不一样呢,只要能编译通过,程序能运行就让main()文件总是放到最后吧。那就让我们来看另一个例程,让我们看看这个方法是不是在任何时候都会起作用

  1. /*test4.c*/
  2. 2 play2()
  3. 3 {
  4. 4 play1();
  5. 5 }
  6. 6
  7. 7 play1()
  8. 8 {
  9. 9 play2();
  10. 10 }
  11. 11
  12. 12 main()
  13. 13 {
  14. 14 play1();
  15. 15 }

这就是经常用到的一种算法函数嵌套。play1 play2 这两个函数哪个放到前面呢?这时就需要我们来使用第二种方法,使用声明.

  1. 1 /*test5.c*/
  2. 2 play1();
  3. 3 play2();
  4. 4
  5. 5 play2()
  6. 6 {
  7. 7   play1();
  8. 8 }
  9. 9   play1()
  10. 10 {
  11. 11   play2();
  12. 12 }
  13. 13 main()
  14. 14 {
  15. 15   play1();
  16. 16 }


一个大型的软件项目,可能有几千个,上万个 play, 而不只是 play1,play2这么简单这样就可能有 个类似 play1(); play2(); 这样的声明这个时候就需要我们想办法把这样的 play1(); play2(); 另行管理而不是把他放在.c文件中于是.h 文件出现了.


  1. 1 /*test.h */
  2. 2 play1();
  3. 3 play2();
  4. 4 /* test6.C */
  5. 5 #include “test.h”
  6. 6 play2()
  7. 7 {
  8. 8   play1();
  9. 9 }
  10. 10 play1();
  11. 11 {
  12. 12   play2();
  13. 13 }
  14. 14 main()
  15. 15 {
  16. 16   play1();
  17. 17 }

上面是.h文件的最基本的功能。




















以上是关于C语言头文件的作用的主要内容,如果未能解决你的问题,请参考以下文章

单片机c语言中常用的头文件有哪些?分别有啥作用啊?

单片机c语言中常用的头文件有哪些?分别有啥作用啊?

c语言中graphics.h头文件添加了怎么不起作用???

c语言头文件怎么写呀?

Cc++ .h 头文件的作用

c语言中头文件的作用?