在处理一些应该针对liblua5.0和liblua5.1进行编译的代码时,例如,我需要调用5.0中的lua_openlibs(luaState);和5.1中的luaL_openlibs(luaState);luavsluaL),如何在编译时检查我是针对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

我怎样才能达到与利布卢亚相似的效果呢?

最佳答案

Lua 5.1及更高版本将宏LUA_VERSION_NUM定义为版本号的十进制表示,例如lua5.1的501您可以将其与宏进行比较,例如。

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

08-26 11:49