構造体ポインターを lua スクリプトに渡し、コピーなしで lua からそのメンバーに到達する方法があることを知りたいです (読み取りと書き込みの目的で)。
たとえば、ポインタを介して ac 構造体のメンバーを直接上書きすることは可能ですか?
(私はluajitを使用しています)
ティムの答えに加えて、軽いユーザーデータを使用することもできます。最終的に Lua スタックにデータのコピーが残るわけではなく、Lua にプッシュするのはポインターだけです。
Lua は、このポインターの内容、まだ有効なメモリを指しているかどうか、またはこのポインター内のオブジェクトにアクセスする方法を理解していないため、これらすべてを C で自分で処理する必要があります。私は通常、ポインターをリスト上のアイテムなので、リストからエントリが削除された可能性がある場合は、最初にリストを反復処理してポインターを検証します (リストが短い場合は大したことではありません)。Lua でポインタ内の項目にアクセスするには、Lua から呼び出すことができる get/set 関数を C で記述する必要があります。
まず、lightuserdata のプッシュと取得に関するエントリを次に示します。
これを luajit 用にタグ付けしたので、(他の人が言及したように) ライト ユーザーデータを FFI と組み合わせて構造体メンバーに直接アクセスできます。こちらのチュートリアルを参照してください: http://luajit.org/ext_ffi_tutorial.html