2016-11-04 3 views
0

これ以外の点ではポインタを使っていますが、私が今までに見たXlib関数はすべて、参照ではなく値でWindow構造体を渡しています。例えば:なぜXlib仕様はstruct Windowへのポインタを使用しないのですか?

https://tronche.com/gui/x/xlib/ICC/client-to-window-manager/XGetClassHint.html

https://tronche.com/gui/x/xlib/window/XDestroyWindow.html

そのため、特定の根拠はありますか?特に、XGetClassHintの場合、第1および第3のパラメータは参照渡しされますが、第2のパラメータは参照渡しされません。

+0

「ウィンドウ」はサーバーサイドの物事ですね。 – unwind

答えて

2

これらの例ではWindowが構造体ではないようです。それは単なる符号なしの長さです。

#include <X11/X.h> 
Window w; 

私はgcc -Eを通じて私が見ることを合格した場合::それは、与えられた、ある

$ gcc -E wintest.c | grep Window 
typedef XID Window; 
Window w; 

そしてXIDは次のとおりです。

$ gcc -E wintest.c | grep XID 
typedef unsigned long XID; 
2

WindowはX-に住んで獣でありますサーバーではなく、クライアント上にあります。クライアントで必要とされるのは、サーバー上の実際のウィンドウに一意に対応する識別子だけです。これは構造体ではなく、ハンドルまたはXIDです。

関連する問題