私は壁に書かれた「グローバル回避」を読んでいます。それは明白な疑問につながり、どのようにするのが最善でしょうか?グローバル変数をcで使用しない方法
私は明らかに現在のプロジェクトでやりたいと思っています。目標は、離れたPCに、既に標準入力リーダーがあるアプリケーションに「キーストローク」を送信させることです。既存のコードでキーストロークが検出されない場合は、「udpキーストローク」があるかどうかを確認し、そうであれば入力してキーボード入力と見なされるようにします。最小限に侵襲的で、他の人々のコードにぴったりフィットするゴブを必要としません。
だから私は一度ノンブロッキングselect()
を使用して、ループ内のservice()
機能、その後、ポートを開き、バインドするsetup()
関数を使用して、小さなUDPソケットリーダーを石畳のない、ないループ、読むために何があるかどうかだけをチェック今すぐ。その場合は、ソケットからデータを読み込み、それを何かを、それ以外は0
// pseudo c
char c;
setup();
while (1)
{
c = check_for_keyboard_entry();
if (c == 0)
c = service();
handle_keypress(c);
do_a_bunch_of_other_stuff();
}
を返すこれを行うには明白な方法は、間などのポート、タイムアウト、のsockaddrのを転送するために、いくつかのグローバルであります2つの機能。しかし、あなたは熱心な世界を産みますよね?
したがって、機能間で6または8のヴァースを転送するにはどうすればよいですか?
setup()
で静的バースを使用する場合は、service()
ルーチンでアクセスできますか?
malloc-edを取得して渡された構造体がうまくいくと思います。ソケットを閉じてメモリを解放するにはcleanup()
を持っていなければなりません。
これは思い出します。 NO C++!
_'' malloc-edを取得し、渡された構造体が動作すると思われます。 '' - あなたはそれを持っています! –
+1生のスピード!その他のアプローチは? –
\ 0または '\ 0'を修正してください –