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

标签 c lua c-preprocessor

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

关于c - 如何在编译时检查 liblua 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55227718/

相关文章:

在 Windows 上的 NetBeans 中从 C 项目创建 EXE 输出?

c - C 中的 FFTW3 链接

lua中可搜索的标记表?

像 __TIME__ 这样的 C++ 预处理器指令有时不会改变/不会更新

gcc - 即使它真的是.c,如何告诉GCC输入文件是汇编程序?

c - SDL 和 aalib : No SDL_KEYUP event?

c - 在 C 中使用 Glob() 列出目录中的文件

Lua 中的 Lua 缩进代码

testing - 仅为本地主机配置 lua prosody

C++ 类工厂宏