请教:结构体中包含带参数的函数是如何把参数传进来的
本帖最后由 硬邦邦 于 2014-3-9 21:27 编辑今天分析VIVI程序:结构体中包含带参数的函数,不知参数是如何传进来的。
typedef struct user_command {
const char *name;
void (*cmdfunc)(int argc, const char **);
struct user_command *next_cmd;
const char *helpstr;
} user_command_t;
void command_flash(int argc, const char **argv)
{
if (mymtd == NULL) {
printk("Error: Can not find MTD information\n");
return;
}
if (argc == 1) {
printk("invalid 'flash' command: too few arguments\n");
command_help(0, NULL);
return;
}
execsubcmd(flash_cmds, argc-1, argv+1);
}
static user_command_t flash_cmd = {
"flash",
command_flash,
NULL,
"flash [{cmds}] \t\t\t-- Manage Flash memory"
};
add_command(&flash_cmd); 这是一个函数指针,作为结构体的一个成员变量,在这边结构体对象定义时,只需知道函数的地址,在后面调用时,会掉用此函数指针,此时就会传人实际的参数。 谢谢你的回复,你说的还是太深奥了,没理解明白
你用source insight搜索下cmdfunc关键字,应该就可以看到类似cmdfunc(argc,argv)的代码,这边就是实际调用的部分,此时就有传人参数了。而之前仅仅是定义变量,将command_flash这个函数的地址赋值给cmdfunc变量。这样后面调用cmdfunc时,就相当于调用command_flash。 非常感谢看明白了。 顶一下
页:
[1]