第六集(下):函数与模块化编程
一、宏定义
二、函数的使用
1. 函数使用的三个步骤
| 步骤 |
说明 |
示例 |
| 定义 |
编写函数的具体功能 |
int Add(int parm1, int parm2) { return parm1 + parm2; } |
| 声明 |
在调用前声明函数原型(可省略,但推荐) |
int Add(int parm1, int parm2); |
| 调用 |
在需要的地方调用函数 |
result = Add(1, 2); |
2. 函数定义详解
返回值类型 函数名(入口参数类型 参数名, ...) {
// 函数体
return 返回值;
}
- 返回值类型:可以是
void(无返回值)、int、u16 等
- 函数名:避开C语言关键词,不要与其他函数重名
- 入口参数:可多个,用逗号分隔,需指明类型
3.加法函数
// 函数定义(通常在文件后面或独立文件中)
int Add(int parm1, int parm2) {
return parm1 + parm2;
}
// 函数声明(通常在文件开头或头文件中)
int Add(int parm1, int parm2);
// 函数调用(在main或其他函数中)
int result = Add(1, 2);
三、模块化编程
① 新建 .c 和 .h 文件
- 通常一个功能模块对应一对文件
- 示例:
math.c 和 math.h
- 命名建议:英文、有含义、避开关键词
② 编写头文件(.h)
#ifndef __MATH_H__
#define __MATH_H__
// 函数声明
int Add(int parm1, int parm2);
int Sub(int parm1, int parm2);
int Mul(int parm1, int parm2);
#endif
③ 编写源文件(.c)
#include "math.h"
int Add(int parm1, int parm2) {
return parm1 + parm2;
}
int Sub(int parm1, int parm2) {
return parm1 - parm2;
}
int Mul(int parm1, int parm2) {
return parm1 * parm2;
}
④ 在工程中添加模块
-
添加引用路径:
- 在Keil中:
C251 → Include Paths
- 添加模块所在文件夹路径
-
添加源文件到工程:
-
在主文件中包含头文件:
#include "math.h"
四、四则运算模块
math.h
#ifndef __MATH_H__
#define __MATH_H__
// 加法
int Add(int parm1, int parm2);
// 减法
int Sub(int parm1, int parm2);
// 乘法
int Mul(int parm1, int parm2);
#endif
math.c
#include "math.h"
int Add(int parm1, int parm2) {
return parm1 + parm2;
}
int Sub(int parm1, int parm2) {
return parm1 - parm2;
}
int Mul(int parm1, int parm2) {
return parm1 * parm2;
}
main.c
#include "STC32G.H"
#include "math.h"
#include "stdio.h"
void main() {
// 调用模块中的函数
int result1 = Add(1, 2);
int result2 = Sub(5, 2);
int result3 = Mul(5, 3);
// 通过串口输出结果
printf("Add(1, 2) = %d\n", result1);
printf("Sub(5, 2) = %d\n", result2);
printf("Mul(5, 3) = %d\n", result3);
while(1);
}