Skip to content

请教参数类型判断问题 #198

@yanxicheung

Description

@yanxicheung

你好我注册了如下函数
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]);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions