首页 理论教育单片机基础:被调用函数的说明

单片机基础:被调用函数的说明

【摘要】:C51中,与使用变量一样,在调用一个函数之前,必须对该函数的类型进行说明,即“先说明,后调用”。如果调用的是用户自定义函数,而且该函数与调用它的主调函数在同一文件中,一般应该在主调用函数中对被调用函数的类型进行说明。需要注意的是,函数的说明与函数返回值的定义是完全不同的。但是允许在调用一个函数的过程中包含另一个函数调用,即嵌套函数调用在C语言程序中是允许的。

C51中,与使用变量一样,在调用一个函数之前(包括标准库函数),必须对该函数的类型进行说明,即“先说明,后调用”。如果调用的是库函数,一般在程序的开始处用预处理命令“#include”将有关函数说明的头文件包含进来。例如,前面例子中经常出现的预处理命令#include<stdio.h>,就是将与库输出函数printf()有关的头文件stdio.h包含到程序文件中来。

头文件“stdio.h”中存有有关库输入、输出函数的一些说明信息,如果不使用这个包含命令,库输入、输出函数就无法被正确地调用。如果调用的是用户自定义函数,而且该函数与调用它的主调函数在同一文件中,一般应该在主调用函数中对被调用函数的类型进行说明。

函数说明的一般形式如下:

类型标识符 被调用的函数名(形式参数表);

其中,“类型标识符”说明了函数返回值的类型;“形式参数表”中说明各个形式参数的类型。需要注意的是,函数的说明与函数返回值的定义是完全不同的。函数的定义是对函数功能的确立,它是一个完整的函数单位;而函数的说明只是说明了函数返回值的类型。两者在书写形式上也不一样,函数说明结束时在圆括号的后面需要由一个分号作为结束标志;而在函数定义时,被定义函数名的圆括号后面没有分号,即函数定义还未结束,后面应接着书写形式参数说明和被定义的函数体部分。如果被调函数是在主调函数前面定义的,或者已经在程序文件的开始处说明了所有被调函数的类型,在这两种情况下可以不必再在主调函数中对被调函数进行说明。也可以将所有用户自定义函数说明另存为一个专门的头档,需要时用include将其包含到主程序中去。(www.chuimin.cn)

C语言程序中不允许在一个函数定义的内部包括另一个函数的定义,即不允许嵌套定义。但是允许在调用一个函数的过程中包含另一个函数调用,即嵌套函数调用在C语言程序中是允许的。

下面举一个函数调用的例子。若数组data0中存有16个小于0x10的十六进制数,要求得到这16个数据的数字字符的ASCII码值,分别按顺序存入片内数据存储区的30H~3FH中。编写程序如下:

程序执行结果:

这个例子中,主函数main()定义好了数据指针data_pointer,使用16次循环完成将16个1位十六进制数据转换为ASCII码的工作,循环体中调用了decode()函数并将data0数组中的数据作为decode()函数的传递参数,decode()函数执行完毕后会返回参数对应的ASCII码值,由数据指针data_pointer完成结果的存储。