c语言关联其他子程序代码,传智播客:C语言函数对另外一个源文件函数进行调用(外部函数)...

前面文章关于函数的调用都是针对一个源文件中其他函数进行调用的,想要学习函数调用的可以看上一篇文章。有些情况下,函数是可能对另外一个源文件中的函数进行调用的。当一个程序由多个源文件组成的时候,根据函数是否能被其他源文件调用的时候,将函数分为内部函数和外部函数,本文就会围着这外部函数的特点进行讲解,希望每一个在学C语言的小伙伴都能弄懂函数的知识点。

外部函数在开发大的项目的时候,为了方便团队的协同工作,我们需要把一个项目拆分开,分成很多的源文件来实现。最后再将它们整理在一起。为了减少不必要的重复代码,一个源文件有时候需要调用其他的源文件中定义的函数。那么在C语言当中,可以被其他源文件调用的函数成为外部函数,在调用外部函数之前,需要在当前源文件中定义外部函数。定义外部函数的方式就是在函数的返回值类型前面提那家extern关键字,标准代码如下:extern int add(int x,int y);在上面这一行的代码当中,编译器会通过extern关键字知道add()函数是定义在其他的文件当中的外部函数;我们为了帮助大家更好的理解用法,下面在First c文件中定义一个add()函数,然后second.c文件当中使用first.c文件当中定义的add()函数,first.c和second.c的代码示例如下:first.c

5ac0e85eaec12ad4b5435c2a28b34828.png

second.c

0db4e0ff6782dab7772a9cec0ede5670.png

那么运行结果如下:

2dace8e81bd1be3e1809dc3f1acb4599.png

在上面second.c文件当中通过调用的恶first.c里面定义的add()函数计算出来了1+2的结果。second.c文件当中的外部函数add()是在first.c文件中实现的,编译器从first.c里面找到了这个函数,并且把它的作用扩大到后面这个second.c的文件当中,于是second.c的文件中也可以调用这个first.c中定义的add()函数,从而完成上述计算。

下面为了简化我们编程的步骤,C语言是可以在定义外部函数的时候省略关键字extern的。比如说first.c的例子中定义的外部函数add()也是可以修改成下面这样:

int add(int x,int y);

上面代码是由函数的返回类型、函数名和参数列表所组成的,这类格式的代码被称作函数原型。当代码中包含函数原型的时候,可能会有下面两种情况:

(1)编程人员希望编译器可以自动的从其他文件中找出这个函数的定义

(2)编程人员先定义下来未实现的空函数,然后在其他的文件中具体实现;

下面我们就来看个例子,printf()函数的原型写法,如下:

int printf(const char *,…);

当在main()函数中定义了一个printf()函数的原型后再调用时就可以不用包含头文件,如下:

b750ae6e5980f108117e3b74c85f2395.png

运行结果如下:

3e9c808c3c4695d685c7d4a798df78ea.png

在上面这个例子当中,并没有包含头文件stdio.h,但是在代码第一行中生命了printf()函数的原型,那么编译器将会根据该原型自动从其他的文件中查找这个函数的定义,之后把这个函数的作用扩展到原型所在的文件里面,所以在本文件中就能调用printf()函数。

注意!在声明外部函数的时候,无论有没有关键字extern,外部函数与函数定义的返回值类型、函数名称都和参数列表必须是一致的。

7e9096150417d23e7ca547dc7fe16817.png

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值