C从具有相同名称的不同文件执行函数

时间:2017-05-02 01:34:33

标签: c

我有3个具有相同“decisionAction(游戏)”功能的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文件本身都有很多函数和一个decisionAction函数,所以我不能只#include所有AI文件并重命名decisionAction,cos 2不同的AI文件可能有相同的函数名/全局变量。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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