使用 LuaJIT 导入 stat.h

Import stat.h using LuaJIT

我正在编写一个 Lua 应用程序,我正在尝试使用 FFI library 访问 stat.h 头文件中 S_IWUSR 常量的值=21=]JIT.

如何在我的 Lua 代码中包含 stat.h 以便我可以访问常量?

谢谢

使用 ffi.cdef,您可以在 FFI C 命名空间 中加载大部分 C 代码,但目前还没有预处理器,因此您应该使用枚举作为常量值。

在我的sys/stat.hS_IWUSR定义如下:

#define _S_IWRITE 0x0080
...
#define _S_IWUSR    _S_IWRITE
...
#define S_IWUSR     _S_IWUSR

LuaJIT 示例:

local ffi = require("ffi")

ffi.cdef([[
    enum{S_IWUSR = 0x0080};
]])

print(ffi.C.S_IWUSR) -- 128

还有 static const 变量添加类型的方法。

static const int S_IWUSR = 0x0080;

但是你要注意不要重新定义!请记住:每个 Lua 状态只有一个 FFI 实例,require("ffi") 不会创建一个新实例。建议将 C 定义放在模块中,让 Lua 包系统管理加载它们一次。