bud*_*rot 4 c c++ bullet bulletphysics
有一天,我决定开始用普通的旧 C 编写一个视频游戏。
这很有趣,三个月后(我有时离开工作的时间很少)我发现自己需要一些物理引擎。
我决定使用 Bullet 物理引擎,因为它似乎是我需要的更好的引擎之一。
然后,我发现 Bullet 并没有真正的 C API,而只有完整的 C++ API。它的 C API 没有得到维护。
经过一天的诅咒,我将我的项目“转换”为 C++,这是一个大胆的声明,表示我对所有堆分配进行了类型转换,并使用 new 和 delete 而不是 malloc 和 free,并在“extern“C”中包含了一些定义{ ... }'。
有些人可能会因为我这样做而向我开枪,但我看不出有其他选择可以使用性能任务处理的东西,例如这个物理引擎,它只有一个 C++ API,在 C 中。
所以现在,我正在使用 g++ 进行编译,同时仍然主要编写“C”代码。我发现自己不那么高兴了,因为代码感觉不再那么纯粹了。
C++ 给了我一些奇怪的错误消息,而我并不反对我经常不喜欢 g++ 解析器的语言。除了我现在可以愉快地将物体相互弹射这一事实之外,我的宠物项目的一些小而纯洁现在已经被遗弃了。
我想知道我是否做对了。我可以寻求一些建议吗,我应该继续而不用担心为我的“主要”C 代码使用 C++ 编译器吗?是否有其他方法可以在 C 中使用此 API 而不会影响性能或过度维护工作?
我想知道我是否做对了。
好吧,您的项目需要一个组件,而不是从头开始重新发明它,而是重用了现有的软件。这对我来说实际上听起来很正确。
我可以寻求一些建议吗,我应该继续而不用担心为我的“主要”C 代码使用 C++ 编译器吗?
你根本不需要担心。C++ 几乎 100% 兼容 C。这样做不会受到任何处罚。由于更严格的类型系统,您实际上已经获得了更好的编译时检查。
是否有其他方法可以在 C 中使用此 API 而不会影响性能或过度维护工作?
不,您不能在不将代码转换为 C++ 的情况下使用 C 中的 API。C++ 标识符被破坏:这意味着,即使您准备使用普通 C 中的 C++ API,您也不知道如何引用它们。理论上这是可能的,实际上并非如此。
你的方法是正确的。祝那场比赛好运!
| 归档时间: |
|
| 查看次数: |
2744 次 |
| 最近记录: |