有一天,我决定开始用普通的 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 而不会影响性能或过度维护工作?