Skip to content

GTK視窗程式開發:解析Casting轉型巨集與G_OBJECT、GTK_OBJECT之疑惑

21 7 月, 2026
GTK視窗程式開發:解析Casting轉型巨集與G_OBJECT、GTK_OBJECT之疑惑
GTK視窗程式開發:解析Casting轉型巨集與G_OBJECT、GTK_OBJECT之疑惑

看GTK的Casting發現一個小問題

【文章摘要】在學習 Linux 桌面的 GTK 視窗程式開發時,型態轉換(Casting)是不可或缺的操作。本文記錄了在學習投影片中看到的幾種常見 GTK Casting 巨集,並提出關於 G_OBJECTGTK_OBJECT 兩者究竟有何差異的技術疑問。

最近在閱讀網路上的 GTK 開發簡報時,研究到了關於 GTK 轉型(Casting)的部分。

簡報中列出了以下幾種常見的 Casting 巨集:

G_OBJECT (object)
GTK_WIDGET (widget)
GTK_OBJECT (object)
GTK_SIGNAL_FUNC (function)
GTK_CONTAINER (container)
GTK_WINDOW (window)
GTK_BOX (box)

這讓我產生了一個小小的疑問:

不知道 G_OBJECTGTK_OBJECT 這兩個巨集,在實際應用上究竟有什麼不一樣呢? @@

(註:在較新的 GTK 版本中,GTK_OBJECT 已經逐漸被廢棄,統一使用 GLib 底層的 G_OBJECT 作為最基礎的物件型態轉換。)


相關即時資訊與推薦閱讀: