Упакованные структуры в (gcc) go

У меня есть старый код C, в котором несколько интенсивно используются упакованные структуры. Я собираюсь использовать Go в качестве оболочки для этого кода, но мне трудно найти способ передать или даже написать определения для этих структур.

Пример:

import "unsafe";

type AlignTest struct {
    c byte;
    y int16;
    z int16;
    q int32;
}

func main() {

    vr := new(AlignTest);

    fmt.Println(unsafe.Sizeof(*vr),  "\n");

}

Возвращает 12, а не 1 + 2 + 2 + 4 = 9, что я хотел бы с упакованной / невыровненной структурой.

Я знаю, что могу просто создать массив байтов и выполнить синтаксический анализ вручную, но это кажется очень хрупким и подверженным ошибкам ...

8
задан Guy B 12 July 2011 в 22:54
поделиться