C语音学习---函数指针
目录
1. 函数指针解析
2. 自定义实现(函数指针赋值)
利用下面一段例子来解析:
int (*set_slave)(modbus_t *ctx, int slave);
1. 函数指针解析
-
set_slave
是一个 函数指针,指向一个函数。 -
该函数接受两个参数:
-
modbus_t *ctx
:Modbus 上下文(context),存储 Modbus 通信的配置信息(如串口、IP 地址等)。 -
int slave
:要设置的 从站地址(Slave ID,范围通常是 1~247)。
-
-
返回
int
:-
0 表示成功。
-
-1 表示失败(如无效的 Slave ID)。
-
2. 自定义实现(函数指针赋值)
如果你想自己实现一个 set_slave
函数并赋值给函数指针:
#include <stdio.h>
#include <stdint.h>typedef struct modbus_t modbus_t; // 假设 modbus_t 是一个结构体// 自定义 set_slave 实现
int my_set_slave(modbus_t *ctx, int slave) {if (slave < 1 || slave > 247) {printf("Error: Invalid slave ID %d (must be 1-247)\n", slave);return -1;}printf("Slave ID set to %d\n", slave);return 0;
}int main() {// 定义函数指针并赋值int (*set_slave)(modbus_t *, int) = my_set_slave;modbus_t ctx; // 假设已经初始化int slave_id = 10;// 调用函数指针int ret = set_slave(&ctx, slave_id);if (ret == -1) {printf("Failed to set slave ID\n");}return 0;
}