c语言外部函数包括 c语言内部函数和外部函数区别

c语言中外部函数是什么意思有两种理解.(1)库函数是C语言的内部函数或自带函数,外部函数即程序员自定函数.
(2)凡加写了extern 的函数是外部函数.
第一种理解好懂:
C语言的内部函数指的是C语言自带的函数,无论是动态链接的或静态链接的. 这些函数通过C语言的头文件定义了.
例如, sin(),cos()等数学函数,在math.h中定义了,输入输出函数 printf(),fgetc()在stdio.h中定义了,时间函数表time(),ctime()等在time.h中定义了.还有许多其他内部函数.编程时,只要用#include 库名.h写在编程头部,程序中就可调用.
自定义函数,就是用户自己写的函数.
第二种凡加写了extern 的函数是外部函数:
自定义函数可以与程序的main()写在同一个文件中,也可以写在另一个文件中,这时你可能还另写自己的头文件或者写extern....,告诉编译器,main中用到的某某函数是"外部函数".
例如,main()在a.c中,自定义函数my_func()在a2.c中
a.c内容:
#include stdio.h
extern float my_func(float a);
main()
{
printf("result=%f\n",my_func(2.0));
}
a2.c 内容:
float my_func(float a)
{
return a;
}
编译:
cl -c a.c[得到a.obj]
cl -c a2.c[得到a2.obj]
cl a.obj a2.obj[链接成a.exe]
运行:
a.exe

result=2.000000
extern float my_func() 是外部说明,告诉编译,main()里的my_func是外部函数,要通过链接(.obj)得到.
如果把my_func写在a.c里:
#include stdio.h
float my_func(float a){
retun a;
}
main()
{
printf("result=%f\n",my_func(2.0));
}
my_func() 就不是外部函数.
编译:
cl a.c [得a.exe]
运行:
a.exe

result=2.000000
关于C语言外部函数两个可以放在同一目录下,也可以放到不同的目录下,前提是你在主函数文件中应当包含相应的头文件或C文件(路径写对应,写完整就好) 。
外部函数文件根据所写函数需要将对应头文件包含进来,stdio.h作为一个标准输入输出文件,只要你该外部文件内涉及到输入输出等操作,就是必须要包含进来的 。
希望对你有所帮助!
C语言中函数的类型有哪些呢?对于C语言中的函数类型,一般可以分为以下两类:
1. 库函数(Library Function):也称为内置函数(Built-in Function),是由C语言提供的、已经封装好的函数 。库函数通常具有标准化、通用化的特点,包括数学运算、字符串处理、文件操作等方面 。例如`printf()`和`scanf()`是C语言中常用的库函数 。
2. 用户自定义函数(User-Defined Function):也称为外置函数(External Function),是程序员根据需求自行编写的函数 。用户自定义函数可以将某一段需要重复使用的代码封装成一个函数,在其他地方调用该函数即可实现相同的功能,起到了复用代码的作用 。在需要多次执行特定任务时,使用自定义函数可以使程序结构更加清晰、易于理解 。
什么是外部函数?什么是内部函数?定义在当前翻译单元(一般是.c文件包含c语言外部函数包括了头文件之后c语言外部函数包括的结果)外c语言外部函数包括,以extern前缀声明的函数对于当前翻译单元来说是外部函数 。它提示编译器c语言外部函数包括,假定这个函数的定义存在,但不在当前翻译单元中 。因此若语法正确,编译器不对此函数产生标识符未定义的错误 。链接器会检查编译器得到的若干目标文件以及静态库文件中的包括函数在内的符号,如果不满足唯一定义性则产生错误,链接失败,不会产生最终目标文件(如.exe可执行文件) 。
对于加static前缀声明的函数,编译器认为定义在当前翻译单元或库中且不会被其它翻译单元引用(也就是说函数仅对当前源文件有效) 。相对于extern(外部)函数,这些函数可以称为internal(内部)函数 。

推荐阅读