2016-11-04 1 views
0

포인터로 작업하지만, 지금까지 본 모든 Xlib 함수는 Window 구조체를 값이 아닌 참조로 전달합니다. 예컨대 : 그것에 대해 특정 이론적 근거는Xlib 사양이 Window 구조체에 대한 포인터를 사용하지 않는 이유는 무엇입니까?

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

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

있습니까? 특히 XGetClassHint의 경우 첫 번째와 세 번째 매개 변수는 참조로 전달되지만 두 번째 매개 변수는 참조로 전달됩니다.

+0

'Window '는 서버 측 thingamabob입니다, 그렇죠? – unwind

답변

2

그 예에서는 Window이 구조체가 아닙니다. 그것은 단지 서명되지 않은 long입니다. 즉,이 주어진다 : 나는 gcc -E을 통해 그것을 전달하는 경우

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

내가 참조 :

$ 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입니다.

관련 문제