将Lua编译为C++除了避免'extern C'和获得'C++异常'之外有什么好处?

fra*_*fls 9 c++ lua

我是Lua的新手,我希望使用C++将Lua嵌入我们的游戏项目中.我注意到的第一件事是,Lua被允许编译为C++代码,并且从doc,我已经知道这将消除围绕Lua头部的'extern C',并且错误处理将是C++异常而不是跳远踏板/ setjump.

我的问题是,除了这两个差异之外,将Lua代码编译为C++代码还有其他任何实际好处吗?这两个并不能说服我,因为,1)它不打扰我用'extern C'包装c标题,2)我们的项目不允许异常,所以我必须在luaconf.h中更改才能使用longjump/setjump任何方式.

Nic*_*las 9

这些将Lua编译为C++的好处.的extern "C"事情是不是真的连一点; 这都是关于异常处理的.虽然您的应用程序禁止异常,但并非每个C++应用程序都有.

如果您正在使用所有 C++,则必须采取措施防止异常通过Lua(除非您使用像Luabind这样的包装器,否则不是世界上最容易的事情)或者将Lua编译为C++.

将Lua编译为C++没有其他好处.异常处理 Lua可以编译为C++的原因.

  • @NicolBolas同意,但是如果代码终止于C-C++边界,则终止看起来不同(并且可能令人困惑),而不是冒泡过去的main.我在一个正在进行的项目中发生了这种情况,并且它确实更难以找到代码崩溃的原因.此外,在他们的情况下,如果谷歌Breakpad在正常情况下捕获其他异常,我怀疑如果被lua调用的东西抛出它将不会捕获它们(但我不知道破坏板如何工作所以我可能是错的) (2认同)