C语言家族程序中,头文件被大量使用,每个C程序通常由头文件和定义文件组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。
头文件的主要作用在于多个代码文件全局变量的重用、防止定义的冲突,对各个被调用函数给出一个描述,其本身不需要包含程序的逻辑实现代码,它只起描述性作用,用户程序只需要按照头文件中的接口声明来调用相关函数或变量,链接器会从库中寻找相应的实际定义代码。
/*头文件内容,假设名字是test.h*/
#ifndef MYHEADFILE
#define MYHEADFILE
void InitInterpolation();
void Draw_Border();
void Draw_Background();
void Draw_Gray();
#endif
/*以下是test.c的内容*/
#include "test.h"
/*后面就是各个函数的实现*/
同项目中其他各个文件需要使用这些函数时只需要下面这样一句:
#include "test.h"
千万不要包含.c文件,会出现重复定义问题
头文件是你程序中需要用到东西,如需要某个数学函数,
则必须包括数学相关头文件,如math.h,当然,也可以自己写函数,只要你不怕麻烦!
头文件是你程序中需要用到东西,如需要某个数学函数,
则必须包括数学相关头文件,如math.h,当然,也可以自己写函数,只要你不怕麻烦! 头文件就是在你所编制的程序运行时要用到的文件!
如 math.h 和 stdio.h
头文件就是在你所编制的程序运行时要用到的文件!
如 math.h 和 stdio.h
头文件就是在你所编制的程序运行时要用到的文件!
如 math.h 和 stdio.h
#include 的本质就是把对应的文件直接拷贝到这一行里面
要理解头文件,主要是要理解“声明”
C/C++中,所有使用到得变量、函数、类都要是声明过得,就是说,要有一行语句来告诉编译器,我有一个名字叫XXX的???类型的变量(函数、类)。
然后还有一个因素就是,在编译的时候,程序是按照每个.C或.CPP文件单独编译的。
也就是说,对于每个C文件中,如果都用到了同一个函数(比如printf),那么,我在每个对应文件中写一遍printf的声明明显是很麻烦的。所以我把这个声明单独写了一个文件,为了区别,我把扩展名记做.h,在需要使用对应的函数(类)的时候,我就不需要去拷贝函数的声明,而只需要#include对应头文件就可以了,系统自动帮你拷贝进来——C语言提供的头文件,按照函数功能分类好了,比如数学函数就都写在了math.h里面,一包含就全包含,不管你用没用到cos()这个函数或者其他什么。
当然,由于.h文件中也可以包含其他.h文件,所以为了不重复声明或定义,需要用宏做相应的处理,这个不是要理解的东西,而是照着写。
看到你的补充,在这里我也补充下答案
对于自己定义的函数,首先,肯定的是,你至少需要在一个C文件中定义它,否则链接会出错。当你想在任何一个文件中使用的时候,你只需要让这个文件包函数声明所在的头文件即可。
具体来说:
a.h中声明了了
int a( int x);
a.c中实现这个函数,需要有类似代码
#include "a.h"
//.....其他代码
int a(int x)
{
return x*x;
}
如果在b.c中想使用这个,则只要在b.c中这样就可以:
#include "a.h"
//....其他代码
x = a(x);
//...其他代码
头文件和你写的是两个概念。
头文件是指以.h为后缀的一些文件。一般来说,文件中包含了函数,变量或类的申明。如果是动态库的头文件,那么会包含导出函数或导出类的申明。
头文件是动态编译的产物。其目的是为了在编写代码时,不用在意其实现,仅在意其申明即可,直到执行的时候才去关注具体实现。
而你写的#include<stdio.h>是include语句。这个表示,本程序需要使用这个stdio.h头文件中申明的函数或类。
声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:daokedao3713@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有
邮箱:daokedao3713@qq.com