我需要创建一个对应于具有固定大小数组的C结构的Julia类型:
struct cstruct {
...
int arr[N] //N known at compile time
...
};
我已经使用这样的数组定义了与其他C结构相对应的Julia类型:
type jstruct
...
arr::Ptr{Cint}
...
end
但据我了解,这仅在arr
是指针时才有效,而不是特定大小的数组。如何确保arr
之后的元素偏移在两种语言中保持不变?
答案 0 :(得分:9)
当您使用固定大小的数组(或使用数组hack)定义C结构时,数据将直接内联存储在该结构中。它不是指向另一个区域的指针。等效的Julia结构是:
type JStruct{N}
arr::NTuple{N,Int}
end
这将直接在结构中内联存储整数。
答案 1 :(得分:4)
请注意,如果您希望在Julia中对此对象执行数组类型操作,则StaticArrays包可能很有用。它使用元组来存储数组的元素,同时还为它们提供了一个AbstractArray接口。