hhjc.net
当前位置:首页 >> 外部函数 >>

外部函数

有两种理解.(1)库函数是C语言的内部函数或自带函数,外部函数即程序员自定函数.(2)凡加写了extern 的函数是外部函数.第一种理解好懂:C语言的内部函数指的是C语言自带的函数,无论是动态链接的或静态链接的. 这些函数通过C语言

当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数. 如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数. 定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:static 函数类型 函数名(函数参数表){……}在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:[extern] 函数类型 函数名(函数参数表){……}外部函数原型声明要有extern简单说,外部函数是用户自定义函数,该函数写在另一个文件里.

1、外部函数extern时声明这个函数为外部函数,本文件不做定义,只调用,编译不会出错,但不能运行(没有函数实体).如果想有运行结果就必须将函数实体包含进来,所以文件包含和extern是配合使用的.文件包含只需要包含.h就是实体的头文件,但有些软件貌似不能识别头文件和c的关系,所以就只能包含.c文件.2、也就是说外部函数extern只是个声明,他告诉编译器我用到了一个外部函数,但如果该文件没有将函数实体包含进来,编译器是找不到的,依然是不能运行的,所以extern只是个声明,并没有做任何事,只是这样是没用的.include是包含一个文件,就是类似于该文件复制到此处(只是说类似,其实是个查找路径,让编译器去该路径查找函数).

内部函数跟外部函数的区别在于:一个文件中定义的函数能否被其它文件调用.能被调用的函数在前面加extern(一般省略),而不能被调用的加static(不能省略),通常函数本质上是全局的,也就是外部的可调用的.我们通常调用的#include本质上就是一些外部函数的集合,由于在一个文件中的函数要调用另外一个文件的函数,要求在开始声明一下,为了省略这些声明,我们引用include命令.

如果在mian()之前,需要声明例如add()这个函数#include"stdio.h"int add(int x,int y);int main(){int a=1,b=2,c;c=add(a,b);printf("%d",c);return 0;}int add(int x,int y){return x+y;}

B外部函数~在函数定义时,默认的是外部函数,即可以被其他文件调用(有的会加上关键字extern以表明该函数为外部函数,但不加这个关键字也默认为外部函数,故一般不用加).在其他文件中的函数调用本函数时,只要在前面加上extern声明本函数为外部函数,就可以直接使用了.

C里面 函数有效空间默认是 extern 不用声明 这意味着 平时写代码的时候如果某个函数仅仅是本文件使用记得在前面加 static ,这是个习惯问题 要有意识这样做其他文件要引用这个函数只需要提供函数原型就行了可以写在.h文件里面也可以直接写作.c文件里面一般是一个模块一个.c和一个.h文件 .h文件包含所有外部需要看见的东西不需要给外部看到的东西 全部加static但编译的时候 要提供含有函数的.c文件 如果你是用IDE那么 只要都在一个工程下面 就行了

函数一般是完成一项任务的一段子程序.同一文件内的函数叫内部函数,不在同一文件内的函数叫外部函数.所以,c语言中并不是所有的函数都是外部函数,大多数为内部函数.

因为C语言编译时要检查语法,所以A不对;C语言没有过程,只有函数,所以B不对;C语言函数内不能定义函数,既不能嵌套定义,所以C不对.排除法也知道是D了.当然由“函数内不能定义函数”也可以推出所有函数都是外部函数. 其实这种说法对外部函数的理解也还值得商榷.但其它的是完全不对,也就选它吧.

两种用法对于变量前面加static 如果变量在函数内部定义,如 int function(){static int a}表明变量a是一个静态变量(局部的),如果变量在函数外面定义,如 static int a ; int function(){},表明变量是全局的,在其他文件中无法使用extern 进行引用.对于函数前面加static,表示此函数为本文件的私有函数,不能被别的文件使用extern进行引用.

网站首页 | 网站地图
All rights reserved Powered by www.hhjc.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com