SWIG에서 __attribute__((packed,aligned(1)))
으로 정의 된 C 구조체를 어떻게 래핑합니까?__attribute __ ((packed, aligned (1))))로 정의 된 C 구조체를 래핑하는 방법은 무엇입니까?
0
A
답변
0
당신은이 작업을 거의 아무것도 할 필요가 단순히 #define
원정 속성 :
%module test
#define __attribute__(x)
struct foo {} __attribute__((packed,aligned(1)));
구문 분석하고 작업이 의도 한대로.
이 작동하는 이유는 SWIG가 개체의 레이아웃이나 크기를 신경 쓰는 코드를 생성하지 않기 때문입니다. 또한 그것에 관한 가정을 만드는 코드도 생성하지 않습니다. 대신 모든 액세스/malloc/new는 생성 된 코드를 정확히 컴파일하는 컴파일러를 통해 처리됩니다.
모듈을 컴파일하는 컴파일러에서 볼 수있는 구조체의 정의가 올바른지 확인하면 아무 문제가 없습니다.
+0
이것은 많은 도움이되었습니다. 고맙습니다. –
랩으로 무엇을 의미합니까? "정렬되지 않은 안전한 방식으로 포장을 풀"것을 의미합니까? memcpy – hanshenrik
swig를 사용하여 그 구조를 감싸고 싶습니다. –
그러나 swig는 약간의 에러를 보여줍니다. (syntax (3)의 오류) –