从另一个标头内的一个标头存储函数调用

时间:2016-11-04 09:32:52

标签: c

#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中实现这样的功能呢?所以基本上将一个函数调用存储在另一个头文件中。

1 个答案:

答案 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()的代码,以便支持将函数指针作为参数使其工作,您不能强迫它执行它不是设计的事情。