【问题标题】:Why does the Xlib specification does not use pointers to struct Window?为什么 Xlib 规范不使用指向 struct Window 的指针?
【发布时间】:2023-03-15 03:11:01
【问题描述】:

虽然以其他方式使用指针,但到目前为止我看到的所有 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 是服务器端的东西,不是吗?

标签: c xlib


【解决方案1】:

看起来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-Server 上而不是客户端上的野兽。客户端唯一需要的是一个标识符,它唯一地寻址服务器上的真实窗口。这不是一个结构,而是一个句柄,或者一个XID。

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 2012-03-06
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 2016-01-26
      • 2021-12-04
      相关资源
      最近更新 更多