扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可以调用。
我们提供的服务有:网站制作、成都网站制作、微信公众号开发、网站优化、网站认证、尚志ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的尚志网站制作公司
C语言最基本的模块为函数,任意函数都可以调用其它任意一个函数,包括函数本身。
1、自定义函数调用其它自定义函数的例子:
#include stdio.h
void fun1(int a)//自定义函数fun1。
{
printf("%d\n",a);
}
void fun2(int m, int n)//自定义函数fun2。
{
fun1(m);
fun1(n);//调用两次另一个自定义函数。
}
int main()
{
fun2(2,3);//调用fun2.
}
在这个例子中,就是主函数调用自定义函数fun2,然后fun2调用另一个自定义函数fun1.
2、不仅可以调用其它自定义函数,还可以调用自己本身。
这种称为递归。
以下是通过递归,计算1+2+3+...+n值的代码:
#include stdio.h
int fun(int n)
{
if(n == 1) return 1;
return n+fun(n-1);//递归调用,返回和值。
}
int main()
{
printf("%d\n", fun(100));//计算1到100的和值。
return 0;
}
1、外部函数extern时声明这个函数为外部函数,本文件不做定义,只调用,编译不会出错,但不能运行(没有函数实体)。如果想有运行结果就必须将函数实体包含进来,所以文件包含和extern是配合使用的。文件包含只需要包含.h就是实体的头文件,但有些软件貌似不能识别头文件和c的关系,所以就只能包含.c文件。
2、也就是说外部函数extern只是个声明,他告诉编译器我用到了一个外部函数,但如果该文件没有将函数实体包含进来,编译器是找不到的,依然是不能运行的,所以extern只是个声明,并没有做任何事,只是这样是没用的。include是包含一个文件,就是类似于该文件复制到此处(只是说类似,其实是个查找路径,让编译器去该路径查找函数)。
file1.c
头文件为file1.h
file2.c
头文件为file2.h
比如file2.c要调用file1.c里的一个函数
首先file2.c里要包含file1.h头文件(file1.h里有file1.c的函数申明)
然后file2.c文件里要有file1.c里的外部函数申明,用extern关键字申明
然后就可以直接file2.c里面调用file1.c里的函数了
我在单片机里是这样弄的完全没问题,51,avr,pic都可以
C语言可以在程序中调用其他文件中的函数。
在大型的程序软件开发中,为了代码的可读性,或多人同时进行代码开发,可以各写自己的源文件,然后,在编译时,将多个源文件链接到一起,就可以形成最终的目标程序。
各程序中的函数可以是共用的,参考代码如下:
//a.c
#include stdio.h
int funa( int n )
{
printf("n=%d\n", n );
return n*2 ;
}
//main.c
#include stdio.h
extern int funa(int); //声明funa为外部函数
void main()
{
int x=5,y;
y=funa(x);
printf("y=%d\n", y );
}
在linux下,编译方法为:gcc main.c a.c -o test
在windows下,可建立一个工程,将两个文件添加到该工程中,编译,运行即可
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流