如何在编译时检查 liblua 版本?

我正在处理一些需要同时编译 liblua5.0 和 liblua5.1 的代码,例如我需要在 5.0 中调用 lua_openlibs(luaState); 在 5.1 中调用 luaL_openlibs(luaState);lua vs luaL),我如何在编译时检查我的代码是针对 5.0 还是 5.1 的?

libcurl 有一个很好的预处理器叫做 CURL_AT_LEAST_VERSION,在 libcurl 中我可以写

#if CURL_AT_LEAST_VERSION(5, 1, 0)
// lua >=5.1-specific code
luaL_openlibs(luaState);
#else
// lua < 5.1-specific code
lua_openlibs(luaState);
#endif

我如何使用 liblua 实现类似的功能?

点赞
用户88888888
用户88888888

Lua 5.1及其后版本定义了宏LUA_VERSION_NUM,表示版本号的十进制表示,例如Lua 5.1的版本号为501。您可以使用宏进行比较,例如:

#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 510
lua 5.1 code
#else
older version code
#endif
2019-03-18 18:23:35