gpt4 book ai didi

c - 将来自一个 header 的函数调用存储在另一个 header 中

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:25 24 4
gpt4 key购买 nike

#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 语言中究竟如何实现这样的事情?所以基本上是将来自一个头文件的函数调用存储在另一个头文件中。

最佳答案

“函数调用”不是 C 中的对象,即它不是您可以存储的东西。调用是一个 Action ,它发生在调用函数时。它不是有大小的东西,即它不能被存储。

您可能需要一个函数指针,这是一种引用函数以便稍后调用的方法。

如果我们要发明一些原型(prototype),比方说

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 ()

另请注意,没有“存储在 header 内”, header 不能存储数据。它们什么也做不了,它们只是带有声明的源文件。必须调整实现 createAlotMonster() 的代码,以支持将函数指针作为其工作的参数,您不能强制它做一些它不打算做的事情。

关于c - 将来自一个 header 的函数调用存储在另一个 header 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40419236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com