2017-02-02 6 views
0

SWIG에서 __attribute__((packed,aligned(1)))으로 정의 된 C 구조체를 어떻게 래핑합니까?__attribute __ ((packed, aligned (1))))로 정의 된 C 구조체를 래핑하는 방법은 무엇입니까?

+0

랩으로 무엇을 의미합니까? "정렬되지 않은 안전한 방식으로 포장을 풀"것을 의미합니까? memcpy – hanshenrik

+0

swig를 사용하여 그 구조를 감싸고 싶습니다. –

+0

그러나 swig는 약간의 에러를 보여줍니다. (syntax (3)의 오류) –

답변

0

당신은이 작업을 거의 아무것도 할 필요가 단순히 #define 원정 속성 :

%module test 

#define __attribute__(x) 
struct foo {} __attribute__((packed,aligned(1))); 

구문 분석하고 작업이 의도 한대로.

이 작동하는 이유는 SWIG가 개체의 레이아웃이나 크기를 신경 쓰는 코드를 생성하지 않기 때문입니다. 또한 그것에 관한 가정을 만드는 코드도 생성하지 않습니다. 대신 모든 액세스/malloc/new는 생성 된 코드를 정확히 컴파일하는 컴파일러를 통해 처리됩니다.

모듈을 컴파일하는 컴파일러에서 볼 수있는 구조체의 정의가 올바른지 확인하면 아무 문제가 없습니다.

+0

이것은 많은 도움이되었습니다. 고맙습니다. –