問題タブ [glib]
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.
glib - Gobjectで、親クラスのメソッドをオーバーライドする方法は、インターフェイスに属していますか?
GObjectクラスAはインターフェイスIAを実装し、BはAの派生クラスです。BはインターフェイスIAの一部であるAのメソッドをどのようにオーバーライドできますか?
または、これはGObjectで可能ですか?
親クラスのメソッドをオーバーライドする方法は知っていますが、継承がインターフェイスと出会うと、事態はより複雑になるようです。
どうもありがとう!
c - GList を反復処理するためのマクロ
私は GLib の二重連結リスト構造である GList を使用しています。GList を反復処理するための標準マクロがあるかどうかを知りたいです。GLibのドキュメントにはそのようなものは見つかりませんでした。その結果、独自のマクロを作成しましたが、標準的なものがあればそれを使用したいと考えています。
問題を説明するには: 通常、私は次のようなコードをたくさん書きます。
マクロを使用すると、次のように減らすことができます
これはノイズがはるかに少ないです。
注: GLib は、リストを繰り返し処理し、各要素に対してコールバックを呼び出すための foreach 関数を提供していることに気付きましたが、コールバックの間接化により、特にコールバックが 1 回しか使用されない場合、コードが読みにくくなることがよくあります。
更新: 標準のマクロがないため、他の人に役立つ場合に備えて、使用しているマクロをここに入れます。修正/改善は大歓迎です。
c - glib 文字列 (gchar *) の整数を解析するには?
整数値 (の数字) を含む文字列があり、この値を int として取得したいと考えています。これを行うには、次のような他の方法があることを認識していatoi()
ます。ただし、これを行うには glib を使用したいと思います。そのような解析/変換機能は存在しますか?
python - Windows で Glib を使用してソケットを監視すると、非ブロック モードになります
次のコードは、Windows では正しく動作しません (Linux では動作します)。
glib ソースのさまざまな場所にあるコメントのスニペットや、他の場所で、Windows ではポーリング中にソケットが非ブロック モードになることが言及されています。その結果、コールバックself.outgoing_cb
が常に呼び出され、ソケットへの書き込みが次のエラー メッセージで失敗します。
書き込み前の呼び出しsock.setblocking(True)
は、これを回避するようには見えません。ポーリングの優先順位を下げ、エラー メッセージを無視すると、期待どおりに動作しますが、多くのイベントがスローされ、多くの CPU が消費されます。Windows でこの制限を回避する方法はありますか?
アップデート
指摘するかもしれませんが、ポーリングの全体的なポイントはPOLLOUT
、書き込み呼び出しを行ったときにEAGAIN
/を取得できないことEWOULDBLOCK
です。私が受け取っている奇妙なエラー メッセージは、これら 2 つのエラー コードに相当する Windows のものだと思います。言い換えれば、gobject.IO_OUT
ソケットが正常に書き込みを許可しない場合にイベントを取得していますが、それをブロック モードにすると、この不適切なエラーが発生します。
別のアップデート
これが正しく機能する Linux では、ソケットは非ブロッキング モードに切り替えられず、ソケットがIO_OUT
ブロックせずに、またはエラーをスローせずに書き込みを許可するときに を受け取ります。Windowsでエミュレート/復元したいのはこの機能です。
その他の注意事項
からman poll
:
からman select
:
gtk - Gtk+/Glib の下に、config ファイルを読み書きできるユーティリティ関数はありますか?
次のように、キーと値を含む構成ファイルがあります。
このファイルを読み取ってキーに対応する値を取得できる Gtk/Glib のユーティリティ関数はありますか?
c - GLib が型を再定義するのはなぜですか?
GLib で型を再定義する理由は何ですか? なぜ、 、 などに変わるのですchar
か?gchar
int
gint
c - g_strncasecmp の代わりに何を使用すればよいですか?
g_strncasecmp は廃止されたようですので、同じことを行う別の関数を探しています。
c - gtkプログラミングでg_main_loopはどのように機能しますか?
GTK+プログラミングは初めてです。と呼ばれるAPIに出くわしましたg_main_loop()
。私は自分のコードでそれを使用しましたが、それがどれほど正確に機能するかはまだわかりません。誰かg_main_loop()
が小さなコードスニペットで説明できますか?
c - g_strduping char 配列メンバー要素
最後の行はコンパイルされません。&(inst->name) も試してみましたが、うまくいきませんでした。私が得るエラーは次のとおりです。
エラー: char は構造体型ではありません。
char[] と char * はまったく異なる型であることを理解しています。しかし、g_strdup は C 文字列の開始位置を取得して、それを複製できませんか? 次のようにすると動作します:
ローカルの char 配列のコピーを作成せずに、私がやろうとしていることを達成するにはどうすればよいですか? どちらの場合も g_strdup に char 配列が渡されているため、最初のシナリオでは引数を正しく渡していないと思います。
asynchronous - glib シグナルは非同期ですか?
glib を使用して を介してシグナルをディスパッチする場合emit
、すべての「リスナー」/ハンドラーが連続して呼び出されますか、または各リスナー/ハンドラーの後にイベント ループに制御が放棄されますか?