为什么Xlib规范不使用指向struct Window的指针?

时间:2016-11-04 14:52:19

标签: c xlib

虽然否则使用指针,我到目前为止看到的所有Xlib函数都是按值传递它们的Window结构,而不是通过引用。 E.g:

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

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

有什么特别的理由吗?特别是,在XGetClassHint的情况下,第一个和第三个参数通过引用传递,但第二个参数不是。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

Window是一个生活在X-Server上的野兽,而不是客户端上的野兽。客户端唯一需要的是一个唯一地指向服务器上真实窗口的标识符。这不是一个结构,而是句柄XID