gpt4 book ai didi

C 从同名的不同文件中执行函数

转载 作者:行者123 更新时间:2023-11-30 16:46:26 25 4
gpt4 key购买 nike

我有 3 个具有相同“decideAction(game)”函数的 AI 文件

在运行游戏的主文件中:

在 C++ 中这很简单,因为我只使用了命名空间

namespace AI_A {
#include "AI_A.cpp"
}
namespace AI_B {
#include "AI_B.cpp"
}
namespace AI_C {
#include "AI_C.cpp"
}

在游戏中我做到了

if(turn == 0) { AI_A:decideAction(game); } etc....

我有办法为 C 做到这一点吗?因为 C 没有命名空间或类?

每个AI文件本身都有很多函数和一个decideAction函数,所以我不能只是#include所有AI文件并重命名decideAction,因为2个不同的AI文件可能具有相同的函数名称/全局变量。

谢谢!

最佳答案

你不能在 C 中包含这样的文件。在 C 中,“#include”意味着简单的文件插入,并且是在预处理器级别完成的(就像以 # 开头的所有内容一样),因此它显然不能依赖于任何运行时(就像回合的值(value))

但是,这并不是什么大问题,因为您仍然可以通过多种方式同时使用所有 3 个文件中的函数。大多数系统的工作方式是向名称添加预处理器机制来操作它们。阅读此内容:Why doesn't ANSI C have namespaces?

我在预处理器级别看到的快速修复方法是简单地使用预处理器来欺骗名称,其工作原理类似于简单的查找和替换:

#include "AI_A.cpp"
#define decideAction AI_AdecideAction
...
#include "AI_B.cpp"
#define decideAction AI_BdecideAction

另外,不要忘记 header (如果有)并注意所有冲突,它会起作用。

关于C 从同名的不同文件中执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43728777/

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