映射 c 数组
Mapping c arrays
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
}
您的 post 中有几个问题,所以我会尽力回答所有问题。
Swift 中的结构布局不像 C 中那样按源顺序排列,因此您不能在 Swift 中编写相同的结构表示。编译器可以根据需要打包和重新排列它。所以如果你想要 C 布局,你必须使用 C 来定义结构。
至于用一定数量的元素制作元组的简单方法,没有简单的方法可以做到。你可以用C定义它,手写你需要的,或者使用像Sourcery这样的工具来生成它。
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
}
您的 post 中有几个问题,所以我会尽力回答所有问题。
Swift 中的结构布局不像 C 中那样按源顺序排列,因此您不能在 Swift 中编写相同的结构表示。编译器可以根据需要打包和重新排列它。所以如果你想要 C 布局,你必须使用 C 来定义结构。
至于用一定数量的元素制作元组的简单方法,没有简单的方法可以做到。你可以用C定义它,手写你需要的,或者使用像Sourcery这样的工具来生成它。