Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struct LuaJit预定义结构_Struct_Lua_Ffi_Luajit - Fatal编程技术网

Struct LuaJit预定义结构

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要求在使用函数之前定义

我试图在Lua中创建一些相互依赖的结构,就像这样。但我在做这件事时遇到了问题。我是否可以将Foo预定义为空结构,然后再定义它

谢谢

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;
]]