値への実際のポインターを送信するのではなく、値をポインターにキャストします。これらの例は、GTK プログラムの GUI インターフェイス コードで見つかりました。
g_signal_connect (pastebutton[pane],
"clicked",
G_CALLBACK(on_paste_button_pressed),
(void*)((long)pane<<4));
上記の例では、 の最後のパラメーターを参照していますg_signal_connect
。on_paste_button_pressed
GTK2 によって呼び出されると、次のように void ポインターをキャストし直しますon_paste_button_pressed
。user_data
int pane = ((long)user_data) >> 4;
実際には、この特定の例をコードに追加しましたが、既存のものに基づいています。キャストに関する警告を避けるために、ビットシフトを追加しました。プログラム自体には、多数のウィジェットを含む 4 つのペインがあり、コピーと貼り付けのボタンを使用して、あるペインから別のペインにすべての値をコピーできます。
値をポインタアドレスにキャストするこの方法はよく使用されますか?また、これを使用しない理由はありますか?
編集:
整数から void ポインターへのキャストも、次のように実行できます。
void* void_ptr = some_int - NULL;