首页 理论教育单片机应用:函数的定义

单片机应用:函数的定义

【摘要】:从用户的角度划分,函数有两种,即标准库函数和用户自定义函数。2.函数名函数名是用户为自定义函数取的名字,以便调用函数时使用。定义一个返回两个整数最大值的函数max()如下所示:4.reentrant修饰符在C51中,这个修饰符用于把函数定义为可重入函数。在C51中,当函数被定义为可重入函数,C51编译器编译时将会为可重入函数生成一个模块栈,通过这个模块栈来完成参数的传递和局部变量的存放。

从用户的角度划分,函数有两种,即标准库函数和用户自定义函数。标准库函数是keil Cx51编译器提供的,不需要用户进行自定义,可以直接调用。用户自定义函数则是用户根据自己的需要编写的实现某种特殊功能的函数,它必须先定义之后才能调用。函数定义的一般形式如下:

1.函数类型

函数类型说明了函数返回值的类型。它可以是前面介绍的各种数据类型,用于说明函数最后的return语句送回给被调用处的返回值的类型。如果一个函数没有返回值,函数类型可以不写。在实际处理中,一般把它的类型定义为void。

2.函数名

函数名是用户为自定义函数取的名字,以便调用函数时使用。它的取名规则与变量的命名规则一样。

3.形式参数表

形式参数表用于列举在主调用与被调用函数之间进行数据传递的形式参数。在函数定义时,形式参数的类型必须加以说明,可以在形式参数表的位置说明,也可以在函数名后面、函数体前面进行说明。如果函数没有参数传递,在定义时,形式参数可以没有或用void,但括号不能省略。(www.chuimin.cn)

定义一个返回两个整数最大值的函数max()如下所示:

4.reentrant修饰符

在C51中,这个修饰符用于把函数定义为可重入函数。所谓可重入函数就是允许被递归调用的函数。函数的递归调用是指当一个函数正被调用且尚未返回时,又直接或间接调用函数本身。一般的函数不能做到这样,只有可重入函数才允许递归调用。在C51中,当函数被定义为可重入函数,C51编译器编译时将会为可重入函数生成一个模块栈,通过这个模块栈来完成参数的传递和局部变量的存放。关于可重入函数,应注意以下几点:

1)用reentrant修饰的可重入函数被调用时,实参表内不允许使用bit类型的参数。函数体内也不允许存在任何关于位变量的操作,更不能返回bit类型的值。

2)编译时,系统为可重入函数在内部或外部存储器中建立一个模拟堆栈区,称为重入栈。可重入函数的局部变量及参数被放在重入栈中,使可重入函数可以实现递归调用。

3)在参数的传递上,实际参数可以传递给间接调用的可重入函数。无重入属性的间接调用函数不能包含调用参数,但是可以使用定义的全局变量来进行参数的传递。