我有两个文件main.c和foo.c,我正在尝试将功能数组从一个文件复制到另一个文件。
我的问题是:仅复制第一项。
这是我的代码:
foo.c:
void foo1();
void foo2();
void foo3();
void foo4();
void foo5();
void foo6();
void foo7();
void (*myFuncs[7])() = {
foo1,
foo2,
foo3,
foo4,
foo5,
foo6,
foo7
};
void* getMyFuncs(){
return myFuncs;
}
main.c:
void (*things[7])();
void main(){
memcpy(things, getMyFuncs(), sizeof(getMyFuncs()));
}
在调试模式下运行后,我检查了数组事物,仅复制了 foo1 指针。
所以,我的输出是:
void (*things[7])() = {
foo1 (hex address here),
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
};
我所期望的:
void (*things[7])() = {
foo1 (hex address here),
foo2 (hex address here),
foo3 (hex address here),
foo4 (hex address here),
foo5 (hex address here),
foo6 (hex address here),
foo7 (hex address here)
};
为什么只复制第一项?
谢谢
答案 0 :(得分:0)
我找到了解决方案,这是一个愚蠢的错误!
我的电话:
memcpy(things, getMyFuncs(), sizeof(getMyFuncs()));
是错误的,我不想复制getMyFuncs()的大小。
复制的写方法是通过获取函数数组的大小:
memcpy(things, getMyFuncs(), sizeof(things));