将Lua编译为C++的好处是什么,除了避免“extern C”和获取“C++异常”之外?

我在Lua方面还很新,想用C++将Lua嵌入我们的游戏项目中。我注意到Lua允许编译为C++代码,从文档中了解到,这将消除Lua头文件周围的“extern C”包装,并且错误处理将是C++异常而不是longjump/setjump。

我的问题是,除了这两个区别之外,将Lua代码编译为C++代码是否还有其他真正的好处?这两个区别并没有真正说服我,因为1)将C头文件包装在“extern C”中并不会困扰我,2)我们的项目不允许异常,因此我必须在luaconf.h中做出更改以使用longjump/setjump。

原文链接 https://stackoverflow.com/questions/8400016

点赞
stackoverflow用户734069
stackoverflow用户734069

那些是将 Lua 编译为 C++ 的好处。 extern "C" 其实并不是重点,重点在于异常处理。虽然您的应用程序禁止了异常,但并非每个 C++ 应用程序都是这样。

如果您使用了 C++ 的 所有 功能,则必须采取措施防止异常通过 Lua 传递(除非您使用像 Luabind 这样的包装器,否则这并不是一件轻松的事情)或者将 Lua 编译为 C++。

将 Lua 编译为 C++ 的其他好处并不存在。异常处理才是 Lua 可以编译为 C++ 的原因。

2011-12-06 17:15:17
stackoverflow用户284969
stackoverflow用户284969

另一种思考方式可能是颠倒问题,问:“如果我们已经在使用C++,将Lua编译为C是否有任何好处?”

就我所知,如果将Lua编译为C没有优势,因此将Lua编译为C++似乎更简单且更具有一定的鲁棒性,因为你永远不会有非C++堆栈帧,以免在从Lua回调进入C++时意外抛出并损坏堆栈回退...

2011-12-07 14:01:05