问题标签 [glib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
glib - 在Gobject中,如何覆盖父类的方法属于一个接口?
GObject 类 A 实现接口 IA,B 是 A 的派生类。 B 如何覆盖作为接口 IA 一部分的 A 的方法?
或者,这在 GObject 中是否可行?
我知道如何重写父类方法,但是当继承遇到接口时,事情似乎更复杂了。
非常感谢!
c - 用于迭代 GList 的宏
我正在使用 GLib 的双向链表结构 GList。我想知道是否有任何标准宏用于迭代 GList。我在 GLib 文档中找不到任何这样的东西。结果,我制作了自己的宏,但如果存在,我宁愿使用标准的东西。
为了说明这个问题:通常我写了很多看起来像这样的代码:
使用宏可以将其简化为
噪音要小得多。
注意:我意识到 GLib 提供了一个 foreach 函数来迭代列表并为每个元素调用回调,但回调的间接性通常会使代码更难阅读,特别是如果回调只使用一次。
更新:由于没有标准宏,我将我正在使用的宏放在这里,以防它对其他人有用。欢迎更正/改进。
c - 如何解析 glib 字符串(gchar *)中的整数?
我有一个包含整数值(的数字)的字符串,我想将此值作为 int 获取。我知道还有其他方法可以做到这一点,例如atoi()
;但是,我真的很想使用 glib 来做到这一点。是否存在这样的解析/转换功能?
python - 在 Windows 上使用 Glib 观察套接字会将它们置于非阻塞模式
以下代码在 Windows 上无法正常工作(但在 Linux 上可以):
glib 源代码中各个地方的注释片段以及其他地方提到在 Windows 中,套接字在轮询期间处于非阻塞模式。结果,回调self.outgoing_cb
被不断调用,并且写入套接字失败并显示以下错误消息:
在写作之前打电话sock.setblocking(True)
似乎并没有规避这一点。通过降低轮询的优先级并忽略错误消息,它可以按预期工作,但会引发很多事件,并消耗大量 CPU。有没有办法绕过 Windows 中的这个限制?
更新
我可能会指出,轮询的全部意义POLLOUT
在于,当您进行 write 调用时,您将不会得到EAGAIN
/ EWOULDBLOCK
。我收到的奇怪错误消息,我相信这将是这两个错误代码的 Windows 等效项。换句话说,gobject.IO_OUT
当套接字不允许我成功写入时,我会收到事件,并且将其置于阻塞模式仍然会给我这个不适当的错误。
另一个更新
在 Linux 上,这可以正常工作,套接字没有切换到非阻塞模式,我收到IO_OUT
, 当套接字让我在没有阻塞的情况下写入或抛出错误时。这是我最想在 Windows 下模拟/恢复的功能。
补充说明
来自man poll
:
来自man select
:
gtk - 在 Gtk+/Glib 下是否有任何实用函数,我们可以在其中读取和写入 config 文件?
我有一个配置文件,其中有键和值,如下所示:
那么 Gtk/Glib 中是否有任何实用程序函数可以读取此文件并检索与键对应的值?
c - 为什么 GLib 重新定义类型?
在 GLib 中重新定义类型背后的原因是什么?为什么它们会char
变成gchar
、int
变成gint
等?
c - What should I use instread of g_strncasecmp?
It looks like g_strncasecmp is deprecated, so I am looking for another function to do the same thing.
c - g_main_loop 在 gtk 编程中是如何工作的?
我是 GTK+ 编程的新手。我遇到了一个名为g_main_loop()
. 我在我的代码中使用了它,但我仍然不知道它是如何工作的。有人可以g_main_loop()
用小代码片段解释吗?
c - g_strduping char 数组成员元素
最后一行没有编译。我也试过 &(inst->name) 没有运气。我得到的错误是:
错误:char 不是结构类型。
我知道 char[] 和 char * 完全是不同的类型。但是 g_strdup 不应该能够获取 C 字符串的起始位置并欺骗它吗?如果我执行以下操作,它会起作用:
如何在不制作本地 char 数组副本的情况下实现我想要做的事情?我认为我在第一种情况下没有正确传递参数,因为在这两种情况下 g_strdup 都被传递了一个 char 数组。
asynchronous - glib 信号是异步的吗?
当使用 glib 通过 调度信号时emit
,所有“侦听器”/处理程序是背靠背调用还是在每个侦听器/处理程序之后将控制权交给事件循环?