读书人

问个函数指针方面的有关问题

发布时间: 2014-01-15 15:40:23 作者: rapoo

问个函数指针方面的问题
在linux kernel下的代码,纯C,我要做代码改写,原来:
struct line {
struct line_func func;
};

construct{
line.func.destroy = destroy;
}

现在的目的是修改成static struct,然后用这个struct给函数指针初始化:
我修改如下:
struct line {
struct line_func *func;
};

static const struct line_func func = {
.destroy = destroy.
};

construct{
line.func = &func;
}

这样改是可以的,但是有个问题就是:
原来很多地方都是 line->funcs.destroy();
我修改了struct line_func *func;就必须把无数的调用line->funcs.destroy();
改成:line->funcs->destroy();

非常麻烦,但是我要用这种方式来初始化函数指正,有什么办法无需修改line->funcs.destroy();吗?
static const struct line_func func = {
.destroy = destroy.
};

construct{
line.func = &func;
}
[解决办法]
我struct line_func里都是func pointer:
void (*destroy)();
其实就是指针,这么memcpy过来应该是正确的吧~
============================================

是的。你可以先memcpy, 再微调,得到一个不同的local版本。


manpages, 谢谢。三天不学习,老鸟不识C.

读书人网 >C++

热点推荐