私の質問は簡単ですが、それを行うための最良の方法は分かりません(またはJuliaは現時点でこのような方法を提供していません):どのようにフィールドを設定できますかJuliaのC構造体の値ですか?JuliaからC構造体のフィールド値を更新する
typedef struct node_s
{
int type;
node_t* next;
node_t* children;
node_t* parent;
} node_t;
とジュリアにそれをコピーします:
あなたがCライブラリのツリーのノードを表すために、構造体の種類を持っている想像し
immutable node_t
typ::Cint
next::Ptr{node_t}
children::Ptr{node_t}
parent::Ptr{node_t}
end
は今、あなたはへのポインタを持っていることを前提としnode_t
はC言語で割り当てられ、Juliaのparent
フィールドを更新したいと考えています。私はunsafe_store!
がポインタで指し示された値を更新することがわかっていますが、parent
フィールドのポインタオフセットを計算するのは面倒です(この場合、64ビットマシンではsizeof(Int) + sizeof(Ptr{node_t}) * 2
になります)。同じことをする簡単な方法はありますか?
完璧な回答!私は 'fieldoffset'を知らなかったし、そのような最適化はうまくいく。大いに感謝する!。 – bicycle1885