-
Notifications
You must be signed in to change notification settings - Fork 524
Description
你好我注册了如下函数
int func(int i, char ch, char *str, float d)
{
float daniel = 123.456;
printf("input int: %d, char: %c, string: %s float:%f\r\n", i, ch, str, d);
return 100;
}
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), func, func, test);
走读代码,对回调函数时,类型判断不是很理解:
int (*func)(size_t, size_t, size_t, size_t) = command->data.cmd.function;
ret = func(params[0], params[1], params[2], params[3]);
params[3]是size_t类型,但里面存放的是float型的二进制数据
在给回调函数喂参数时,按我理解是按照size_t类型来解释内存数据的,最终转换成的应该也是个整数呢
怎么实际会变成float型呢?
还有个问题,我发现多加了行打印,实际调用func的时候,float型打印就不对了
int (*func)(size_t, size_t, size_t, size_t) = command->data.cmd.function;
printf("%u, %u, %u, %u\n", params[0], params[1], params[2], params[3]);
ret = func(params[0], params[1], params[2], params[3]);