#include "alotMonster.h"
#include "troll.h"
// alotMonster has a function named createAlotMonster()
// troll has a function named createTroll()
int main (void) {
createAlotMonster(createTroll());
}
// The function createTroll() is then saved inside a variable within createAlotMonster for later use.
如何在c中实现这样的功能呢?所以基本上将一个函数调用存储在另一个头文件中。
答案 0 :(得分:3)
“函数调用”不是C中的对象,即它不是您可以存储的对象。调用是一个动作,它在调用函数时发生。它不是具有大小的东西,即它不能存储。
您可能需要一个函数指针,这是一种引用函数以便稍后调用的方法。
如果我们要发明一些原型,那就说吧
int createTroll(const char *name, int strength);
然后您可以使用如下指针引用该函数:
int (*troll_function)(const char *, int) = createTroll;
所以你会createAlotMonster()
拿这样一个指针:
vod createAlotMonster(int (*monster_function)(const char *, int));
然后你几乎可以像你所说的那样打电话:
createAlotMonster(createTroll);
请注意()
之后没有createTroll
,我们不调用该函数只是将其地址传递给createAlotMonster()
。
另请注意,没有“存储内部标头”,标头无法存储数据。他们不能做任何事情,他们只是带声明的源文件。必须调整实现createAlotMonster()
的代码,以便支持将函数指针作为参数使其工作,您不能强迫它执行它不是设计的事情。