Cから段階的に受け取っている構造体の長い配列をできるだけ少ないコピーですばやく埋めたい.
次のように、構造体がプライマリ データ型のみの場合:
cdef packed struct oh_hi:
int lucky
char unlucky
次に、以下は正常に機能します。
DEF MAXPOWER = 1000000
cdef oh_hi * hi2u = <oh_hi *>malloc(sizeof(oh_hi)*MAXPOWER)
cdef oh_hi [:] hi2me = <oh_hi[:MAXPOWER]> hi2u
しかし、文字配列を保持するように構造体を変更すると、次のようになります。
cdef packed struct oh_hi:
int lucky
char unlucky[10]
以前のメモリビューのキャストはコンパイルされますが、実行すると次のようになります。
ValueError: Expected 1 dimension(s), got 1
Cythonでこれを行う簡単な方法はありますか? 私は構造化された配列を作成できることを認識していますが、それでは C 構造体を直接それに割り当てることはできません。