我有3个AI文件,都有相同的“decideAction(游戏)”功能
在运行游戏的主文件中:
在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文件可能有相同的函数名/全局变量。
谢谢!
发布于 2017-05-02 12:05:20
你不能在C中包含这样的文件。在C中,"# include“意味着一个简单的文件插入,并且是在预处理器级别上完成的(就像所有以#开头的东西一样),所以它显然不能依赖于任何运行时(比如turn的值)。
然而,这并不是什么大问题,因为你仍然可以以多种方式同时使用所有3个文件中的函数。大多数系统的工作方式是将预处理机制添加到名称中来操作它们。请阅读:Why doesn't ANSI C have namespaces?
我在预处理器级别看到的快速解决方案是简单地使用预处理器来欺骗名称,其工作原理类似于简单的查找和替换:
#include "AI_A.cpp"
#define decideAction AI_AdecideAction
...
#include "AI_B.cpp"
#define decideAction AI_BdecideAction此外,不要忘记头文件(如果有),并注意所有的冲突,它会起作用的。
https://stackoverflow.com/questions/43728777
复制相似问题