Julia - C结构中固定大小的数组

时间:2016-10-31 14:26:59

标签: c struct julia

我需要创建一个对应于具有固定大小数组的C结构的Julia类型:

struct cstruct {
    ...
    int arr[N] //N known at compile time
    ...
};

我已经使用这样的数组定义了与其他C结构相对应的Julia类型:

type  jstruct
    ...
    arr::Ptr{Cint}
    ...
end

但据我了解,这仅在arr是指针时才有效,而不是特定大小的数组。如何确保arr之后的元素偏移在两种语言中保持不变?

2 个答案:

答案 0 :(得分:9)

当您使用固定大小的数组(或使用数组hack)定义C结构时,数据将直接内联存储在该结构中。它不是指向另一个区域的指针。等效的Julia结构是:

type JStruct{N}
    arr::NTuple{N,Int}
end

这将直接在结构中内联存储整数。

答案 1 :(得分:4)

请注意,如果您希望在Julia中对此对象执行数组类型操作,则StaticArrays包可能很有用。它使用元组来存储数组的元素,同时还为它们提供了一个AbstractArray接口。