为什么 Xlib 规范不使用指向结构 Window 的指针?
Why does the Xlib specification does not use pointers to struct 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 的情况下,第一个和第三个参数是通过引用传递的,但第二个不是。
这些例子中的 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;
A Window
是一只生活在 X 服务器上而不是客户端上的野兽。客户端唯一需要的是唯一寻址服务器上真实 window 的标识符。这不是结构,而是 句柄,或 XID
.
尽管在其他方面使用指针,但到目前为止我看到的所有 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 的情况下,第一个和第三个参数是通过引用传递的,但第二个不是。
这些例子中的 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;
A Window
是一只生活在 X 服务器上而不是客户端上的野兽。客户端唯一需要的是唯一寻址服务器上真实 window 的标识符。这不是结构,而是 句柄,或 XID
.