void Modbus_RecieveData(u8 *st, u8* len);与uint16_t Modbus_RecieveData(u8 *st, u8* len);的区别 及C语言各种关键字的用法及举例
时间: 2024-09-28 08:12:08 浏览: 24
fuzzy_pid(plc)
5星 · 资源好评率100%
在C语言中,`void` 和 `uint16_t` 是两个不同的数据类型和函数返回值类型,它们在这两个函数声明中起到了不同的作用。
1. `void Modbus_RecieveData(u8 *st, u8* len);` 这个函数声明中,`void` 表示这个函数没有返回值。它接受两个`u8`类型的指针作为参数,分别代表输入的数据存储区`st`和数据长度`len`。这种函数通常用于处理输入数据、执行操作但不需要返回结果的情况,比如网络数据包接收。
2. `uint16_t Modbus_RecieveData(u8 *st, u8* len);` 这里的`uint16_t`是一个无符号16位整数类型,说明这个函数会返回一个16位的无符号整数值。函数的目的是读取并可能转换成一个16位值,然后返回该值。如果Modbus协议规定某个数据项应该以16位表示,那么这个函数可能会返回那个值。
关于C语言的关键字:
- **void**: 关键字,用于声明没有返回值的函数或函数指针。
- **uint16_t**: 用户定义的数据类型,无符号16位整型,用于存储大小为16位的整数。
- **function prototype** (函数原型): C99标准引入了这种形式,提前告诉编译器函数的参数类型,但并不提供实际函数体,这样可以在函数定义之前就使用到函数名。
举例:
```c
// 使用void的例子
void printHello() {
printf("Hello World!\n");
}
// 使用uint16_t的例子
uint16_t readTemperature(void) {
return (uint16_t) sensorReading; // 假设sensorReading是一个已知的16位温度值
}
```
阅读全文