Как можно C структуру, подобную
typedef struct {
double a;
int8_t b[5];
int32_t c;
} Foo;
, успешно смоделировать в Swift? (целые числа фиксированной ширины для однозначности, не стесняйтесь заменить на char
и int
в своей голове)
При импорте структуры C в Swift массивы статического размера будут преобразованы в кортежи и память макет гарантированно будет идентичен. Однако пойти другим путем не так просто, потому что для этого нам нужно вручную указать потенциально длинные типы кортежей.
Чтобы уточнить: приведенная выше структура может быть смоделирована как
struct Foo {
var a: Double
var b: (Int8, Int8, Int8, Int8, Int8)
var c: Int32
}
Есть ли способ упростить этот процесс, например, с помощью макроса препроцессора или специального типа, такого как c ++ std::array
? Например, что-то вроде этого:
struct Foo {
var a: Double
var b: C_CHAR_ARRAY(5)
var c: Int32
}