Struct LuaJit预定义结构
我试图在Lua中创建一些相互依赖的结构,就像这样。但我在做这件事时遇到了问题。我是否可以将Foo预定义为空结构,然后再定义它 谢谢Struct LuaJit预定义结构,struct,lua,ffi,luajit,Struct,Lua,Ffi,Luajit,我试图在Lua中创建一些相互依赖的结构,就像这样。但我在做这件事时遇到了问题。我是否可以将Foo预定义为空结构,然后再定义它 谢谢 ffi.cdef[[ typedef struct { Foo* foo; } Bar; ]] ffi.cdef[[ typedef struct { Bar* bar; } Foo; ]] 这不是LuaJIT和FFI特有的问题,而是如何用C语言声明相互依赖的数据结构和函数 C要求在使用函数之前定义
ffi.cdef[[
typedef struct {
Foo* foo;
} Bar;
]]
ffi.cdef[[
typedef struct {
Bar* bar;
} Foo;
]]
这不是LuaJIT和FFI特有的问题,而是如何用C语言声明相互依赖的数据结构和函数 C要求在使用函数之前定义它。例如:
int foo() {
bar();
}
int bar() {
return 42;
}
要解决此问题,必须在文件开头声明函数bar()
。函数的行为可以稍后定义
int bar();
int foo() {
bar();
}
int bar() {
return 42;
}
同样,在Bar
中使用它之前,需要声明Foo
。还请注意,可以将所有C定义放在同一块中
ffi.cdef[[
typedef struct Foo Foo;
typedef struct {
Foo* Foo;
} Bar;
typedef struct {
Bar* bar;
} Foo;
]]