首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C从同名的不同文件中执行函数

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

Stack Overflow用户
提问于 2017-05-02 09:34:33
回答 1查看 373关注 0票数 0

我有3个AI文件,都有相同的“decideAction(游戏)”功能

在运行游戏的主文件中:

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

代码语言:javascript
复制
namespace AI_A {
    #include "AI_A.cpp"
}
namespace AI_B {
    #include "AI_B.cpp"
}
namespace AI_C {
    #include "AI_C.cpp"
}

在游戏中我做到了

代码语言:javascript
复制
if(turn == 0) { AI_A:decideAction(game); } etc....

有没有办法让我为C做这件事?因为C没有命名空间或类?

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

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-05-02 12:05:20

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

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

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

代码语言:javascript
复制
#include "AI_A.cpp"
#define decideAction AI_AdecideAction
...
#include "AI_B.cpp"
#define decideAction AI_BdecideAction

此外,不要忘记头文件(如果有),并注意所有的冲突,它会起作用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43728777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档