2011-12-02 14 views

Odpowiedz

4

Za pomocą gcc można znaleźć wyrównanie na __alignof__ (type)more. Wartość jest jednak zależna od architektury, więc dla możliwości przenoszenia należy określić wyrównanie na każdym komputerze za pomocą makra. Co oznacza, że ​​hsc2hs jest prawdopodobnie lepszym rozwiązaniem.

Myślę, że niewłaściwe wyrównanie może prowadzić do awarii, ale nie wiem na pewno.

7

Edytuj: Przepraszam, błędnie przeczytałem pytanie i pomyślałem, że pytasz o zrobienie tego z hsc2hs, nie bez. Niepoprawne wyrównanie może prowadzić do niepoprawnych danych i powodować awarie (rozważ, czy układasz tablicę struktur), więc naprawdę powinieneś użyć czegoś przenośnego.

Według FFI cookbook można zdefiniować

#let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__) 

który jest następnie wykorzystywany jako

instance Storable Struct where 
    alignment _ = #{alignment my_struct} 
    sizeOf _ = #{size my_struct} 

alignment słów kluczowych powinny być dostępne w GHC> 7.2.1, więc nie musiałby aby zdefiniować to sam z bardzo nowymi ghc.

Powiązane problemy