2017-12-06 21 views
1

저는 Lua에서 서로 의존적 인 구조체를 만들려고합니다. 하지만 문제가 있습니다. 어쨌든 Foo를 빈 구조체로 미리 정의하고 나중에 정의 할 수 있습니까?LuaJit predefine struct

감사합니다.

ffi.cdef[[ 
    typedef struct { 
     Foo* foo; 
    } Bar; 
]] 

ffi.cdef[[ 
    typedef struct { 
     Bar* bar; 
    } Foo; 
]] 

답변

2

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