Soy bastante nuevo en Lua, y quiero incluir a Lua en nuestro proyecto de juego usando C++. Lo primero que noto, Lua se permite compilar como código C++, y del doc, he aprendido que esto eliminará el 'C externo' envolviendo los encabezados de Lua, y también el manejo de errores será una excepción C++ en lugar de longjump/setjump.¿Cuál es el beneficio de compilar Lua como C++ aparte de evitar 'extern C' y obtener 'C++ exception'?
Mi pregunta es, además de estas dos diferencias, ¿hay algún otro beneficio real para compilar el código Lua como código C++? Estos dos no me convencen realmente, ya que, 1) no me molesta envolver los encabezados c con 'C externa', 2) nuestro proyecto no permite la excepción, así que tengo que cambiar en luaconf.h para usar longjump/setjump de cualquier manera.
Además de esto: "No permite excepciones" podría interpretarse dos caminos. 1. Ningún código de usuario puede lanzar excepciones o 2. Compila con excepciones desactivadas. La diferencia es que muchas cosas estándar arrojarán excepciones (como nuevas) en el caso 1. En esos casos, puede esperar un comportamiento "extraño" si una de esas excepciones alcanza un límite lua C-C++. –
@MichaelAnderson: Es cierto, pero si ningún código de usuario arroja excepciones, ningún código de usuario * las captura * tampoco. Lo que significa que 'std :: bad_alloc' saltará al pasado principal y terminará la aplicación. La pila ni siquiera se desenrolla en ese caso. –
@NicolBolas: Gracias por la explicación. Como dijiste, prohibimos el ** uso ** de excepción en el código de usuario, y tenemos Google Breakpad para atrapar todas las excepciones no controladas y simplemente dejar que nuestro juego termine. Es por eso que el manejo de excepciones en Lua no tiene sentido en nuestro caso. –