3
c2hsc
과 hsc2hs
을 사용하는 동안 많은 작업을 절약 할 수 있었고 C 공용체의 바인딩을 만들 때 몇 가지 문제가 발생했습니다. 구조는 C하스켈에서 c2hsc와 hsc2hs를 통해 C 공용체 인터페이스하기
typedef struct {
int tag;
union {
char a;
double b;
} v;
} sum_t;
c2hsc
주어진 예
가 나를 위해 다음 코드를 작성하는 다음 v
필드가 비어 생성
#starttype sum_t
#field tag , CInt
#field v ,
#stoptype
. hsc2hs
를 통해 툴체인 아래로 더가는 것은 잘못된
data C'sum_t = C'sum_t{
c'sum_t'tag :: CInt,
c'sum_t'v ::
}
질문은 지금
- 수동으로
.hsc
코드를 작성 그래서 바인딩 작업 할 수 올바른 방법은 무엇입니까입니다 산출? c2hsc
할 수있는 방법이 있나요?
'hsc2hs' 코드베이스에서 노동 조합에 대한 언급이 없기 때문에 구현되지 않았다고 생각합니다. 또한 노동 조합은 본질적으로 안전하지 않으므로이를 어떻게 대수 데이터 유형으로 변환할지는 분명하지 않습니다. 그것을 안전하게하려면 판별 자도 필요합니다. 이것은 판사가 아닌 조합입니다. – Rufflewind
최선의 방법은 C에서 직접 생성하고 조작하는 함수를 작성한 다음 하스켈 측에서 사용하는 것입니다. 그러나 나는 FFI에 대해 아무것도 모른다. – dfeuer