功能

GLibsteal_handle_id

不稳定 自版本:2.84 起

声明 [src]

static inline unsigned int
g_steal_handle_id (
  unsigned int* handle_pointer
)

说明 [src]

将 `handle_pointer` 设为 `0`,返回之前在其位置的值。

从概念上来说,这会将句柄 ID 的所有权从引用的变量传输到宏的“调用方”(即,“窃取”句柄 ID)。

这可能非常适用于清晰传达所有权转移,或防止句柄多次被释放。例如:

void
maybe_unsubscribe_signal (ContextStruct *data)
{
  if (some_complex_logic (data))
    {
      g_dbus_connection_signal_unsubscribe (data->connection,
                                            g_steal_handle_id (&data->subscription_id));
      // now data->subscription_id isn’t a dangling handle
    }
}

虽然 `g_clear_handle_id()` 可用于很多与 `g_steal_handle_id()` 相同的情况,但这是不可使用 `g_clear_handle_id()` 的一种情况,因为没有办法将 `GDBusConnection` 传递至 `GClearHandleFunc`

自版本 2.84 起可用

语言绑定无法直接使用此功能。

参数

handle_pointer

类型: unsigned int*

指向句柄 ID 的指针。

该参数将由函数修改。

返回值

类型: unsigned int

暂无说明。