网站建设资讯

NEWS

网站建设资讯

c语言外部函数怎么理解,c语言所有的函数都是外部函数吗

在C语言中,内部函数和外部函数的区别?

内部函数跟外部函数的区别在于:一个文件中定义的函数能否被其它文件调用。能被调用的函数在前面加extern(一般省略),而不能被调用的加static(不能省略),通常函数本质上是全局的,也就是外部的可调用的。

为内江等地区用户提供了全套网页设计制作服务,及内江网站建设行业解决方案。主营业务为做网站、网站建设、内江网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

我们通常调用的#include本质上就是一些外部函数的集合,由于在一个文件中的函数要调用另外一个文件的函数,要求在开始声明一下,为了省略这些声明,我们引用include命令。

什么是外部函数?什么是内部函数?

定义在当前翻译单元(一般是.c文件包含了头文件之后的结果)外,以extern前缀声明的函数对于当前翻译单元来说是外部函数。它提示编译器,假定这个函数的定义存在,但不在当前翻译单元中。因此若语法正确,编译器不对此函数产生标识符未定义的错误。链接器会检查编译器得到的若干目标文件以及静态库文件中的包括函数在内的符号,如果不满足唯一定义性则产生错误,链接失败,不会产生最终目标文件(如.exe可执行文件)。

对于加static前缀声明的函数,编译器认为定义在当前翻译单元或库中且不会被其它翻译单元引用(也就是说函数仅对当前源文件有效)。相对于extern(外部)函数,这些函数可以称为internal(内部)函数。

而不加extern或static声明的函数,默认为定义在当前翻译单元中,且其它翻译单元可以用extern函数声明引用这个函数(对链接器可见)。

对于非extern函数,如果编译器在当前翻译单元中找不到函数的定义,则产生标识符未定义的编译错误,编译失败。

====

[原创回答团]

什么叫外部函数? (C语言问题)

当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。

如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。

定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:

static 函数类型 函数名(函数参数表){……}

在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:

[extern] 函数类型 函数名(函数参数表){……}

外部函数原型声明要有extern

简单说,外部函数是用户自定义函数,该函数写在另一个文件里.

为什么C语言中所有的函数都是外函数

来自百度百科

C语言外部函数是一种可在自身所处的源文件及其他源文件中都能被调用的函数。外部函数的作用域是整个源程序。

函数调用

编辑

1、在定义函数时,若在函数首部的最左端加关键字extern,则表示此函数是外部调用,可被其他文件调用,函数首部可以为

Extern int fun(int a,int b);

C语言规定,定义函数时省略了extern则隐含为外部函数,可被其他文件调用

2、在需要调用函数的文件中,用extern对函数声明,表示该函数是在其他文件中定义的外部函数

所以外函数只是一种引用方式,大项目多人分开写,可能会有多个文件,最后要整合在一起用。那被引用的文件中函数相对与引用者,就是外部函数。


名称栏目:c语言外部函数怎么理解,c语言所有的函数都是外部函数吗
文章URL:http://cdweb.net/article/hsjcse.html