問題タブ [nativecall]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
raku - ネイティブコール。C 関数のパラメーターとして文字列を取得する方法
指定されたポインターに文字列を返す C 関数があります。
Perl6 のバージョンは次のとおりです。
正しい int を返しますが、文字列は返しません。
0 -3 (力)
それは単なるバグですか、それともここで何か問題がありますか?
同じです
arrays - Perl 6 NativeCall CStruct 内で配列を宣言する
CStruct 内でオブジェクトの配列を宣言する方法はありますか?
ACArray[uint8]
はchar *
ポインターであり、実際には構造体内のスペースを予約していません。
の代わりにMy::Struct.new
、おそらく自分でメモリを作成できます ( の代わりにMy::Struct.new()
、a を使用しbuf8.allocate(xxx)
てハンドルを保持し、GC がそれを取得しないようにします。nativecast
それを My::Struct にします)。次に、ポインター演算を使用して内部の文字列を見つける必要があります。構造体などですが、もっと簡単な方法があるはずです。
完全に実装されていなくても、「ここに 80 バイトを置いて、ここにポインタを置いてください」と言う簡単な方法は非常に便利です。
c - fcntl を使用して stdout から新しいファイル記述子を作成すると、ファイルで失敗する
次のような簡単なテスト ファイルがあります。
返されるファイル記述子は -1 です。これは私が望むものではありません。しかし、REPL で同じコードを実行すると、探しているものが得られます。
fcntl
REPL のようにファイルに新しいファイル記述子を作成しないのはなぜですか?
編集: OpenBSD 6.2、Rakudo 2018.02 を実行しています