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

how to check liblua version at compile time?

正在编写一些应该同时针对 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 实现类似的功能?

Lua 5.1 及更高版本将宏 LUA_VERSION_NUM 定义为版本号的十进制表示形式,例如501 对于 Lua 5.1。您可以使用宏对其进行比较,例如

#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 510
lua 5.1 code
#else
older version code
#endif