gpt4 book ai didi

c++ - 在 C 中使用 C++ API?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:32 26 4
gpt4 key购买 nike

有一天,我决定开始用普通的旧 C 编写视频游戏。
这很有趣,三个月后(我有时几乎没有时间离开工作)我发现自己需要一些物理引擎。
我决定使用 Bullet 物理引擎,因为它似乎是满足我需要的更好的引擎之一。
然后,我发现 Bullet 并没有真正的 C API,而只有完整的 C++ API。它的 C API 没有维护。
经过一天的诅咒,我将我的项目“转换”为 C++,这是一个大胆的声明,表示我对所有堆分配进行了类型转换,我使用 new 和 delete 而不是 malloc 和 free,并在“extern“C”中包含了一些定义{ ... }'。
有些人可能会因为我这样做而对我开枪,但我没有看到其他选择来使用 C 中的性能任务处理工具,例如这个物理引擎,它只有一个 C++ API。

所以现在,我正在使用 g++ 进行编译,同时仍然主要编写“C”代码。我发现自己不那么开心了,因为代码感觉不再那么纯粹了。
C++ 给了我一些奇怪的错误信息,虽然我并不反对这种我经常不喜欢 g++ 解析器的语言。除了我现在可以愉快地将物体弹回彼此之外,我的宠物项目的一些小巧和纯洁现在已经被遗弃了。

我想知道我是否做对了。我可以寻求一些建议吗,我应该继续而不用担心为我的“大部分”C 代码使用 C++ 编译器吗?是否有其他方法可以在 C 语言中使用此 API 而不会影响性能或进行过多的维护工作?

最佳答案

I'm wondering if I did the right thing.

好吧,您的项目需要一个组件,而不是从头开始重新发明它,您可以重复使用现有的软件。这实际上对我来说听起来很正确。

Can I ask for some advice, should I just carry on and not worry about using a C++ compiler for my 'mostly' C code?

您完全不必担心。 C++ 几乎 100% C 兼容。这样做不会受到任何处罚。由于更严格的类型系统,您实际上获得了更好的编译时检查。

Are there other ways to use this API in C without any performance hits or overdone maintenance work?

不可以,如果不将代码转换为 C++,就不能在 C 中使用 API。 C++ 标识符被破坏:这意味着,即使您准备好从普通 C 中使用 C++ API,您也不知道如何引用它们。理论上这是可能的,但在实践中是不可能的。

您的方法是正确的。祝你游戏顺利!

关于c++ - 在 C 中使用 C++ API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5017416/

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