2017-07-30 50 views
-1

對不起,我是一個新手。 我正在學習閱讀xfce4:mousepad的非常簡單的文本編輯器。 不過它,我可以看到兩個破符號 mousepad_window_get_type 和 mousepad_application_get_typexfce鼠標墊源代碼中的符號破碎

/home/utente/Desktop/mousepad-master/mousepad/mousepad-window.h: 
    22 G_BEGIN_DECLS 
    23 
    24: #define MOUSEPAD_TYPE_WINDOW   (mousepad_window_get_type()) 
    25 #define MOUSEPAD_WINDOW(obj)   (G_TYPE_CHECK_INSTANCE_CAST ((obj), MOUSEPAD_TYPE_WINDOW, MousepadWindow)) 
    26 #define MOUSEPAD_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOUSEPAD_TYPE_WINDOW, MousepadWindowClass)) 
    .. 
    44 typedef struct _MousepadWindow  MousepadWindow; 
    45 
    46: GType   mousepad_window_get_type   (void) G_GNUC_CONST; 
    47 
    48 GtkWidget  *mousepad_window_new    (void); 



/home/utente/Desktop/mousepad-master/mousepad/mousepad-application.h: 
    25 typedef struct _MousepadApplication  MousepadApplication; 
    26 
    27: #define MOUSEPAD_TYPE_APPLICATION   (mousepad_application_get_type()) 
    28 #define MOUSEPAD_APPLICATION(obj)   (G_TYPE_CHECK_INSTANCE_CAST ((obj), MOUSEPAD_TYPE_APPLICATION, MousepadApplication)) 
    29 #define MOUSEPAD_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOUSEPAD_TYPE_APPLICATION, MousepadApplicationClass)) 
    .. 
    32 #define MOUSEPAD_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOUSEPAD_TYPE_APPLICATION, MousepadApplicationClass)) 
    33 
    34: GType    mousepad_application_get_type    (void) G_GNUC_CONST; 
    35 
    36 MousepadApplication *mousepad_application_get     (void); 
+0

「破折號」是什麼意思?你能否詳細說明一下? –

+0

這些符號未被提及。 – Hardplus

+0

這些符號不在源文件中 – Hardplus

回答

0

這些符號可能在該項目的其他頭文件中定義。在項目目錄中執行$ grep -nr mousepad_window_get_type .。這會顯示mousepad_window_get_type這個詞的所有可用用法。然而,你很可能不會在項目的任何地方找到這些符號,因爲我懷疑它們是在編譯項目時鏈接到的庫中的一個函數。

0

* _get_type函數由G_DEFINE_TYPE macro定義。它們也可以通過G_DECLARE_FINAL_TYPEG_DECLARE_DERIVABLE_TYPE來聲明,但這不適用於鼠標墊。

Xfce的項目是用GTK +編寫的,所以你需要先學習它,否則你會發現一些代碼部分混淆。你可以找到很多關於GTK +/GObject/GLib的教程,他們的文檔(希望)是全面的。 The GLib/GTK+ Development Platform是初學者的好開始。

+0

使用G_DEFINE_TYPE宏不會調用這些符號。他們獨自在兩行代碼中! – Hardplus

+0

不,但'mousepad_window_get_type'被「MOUSEPAD_TYPE_WINDOW」宏「別名」並用作'g_object_new(MOUSEPAD_TYPE_WINDOW,NULL)'。這只是GOJBECT的特質。 – AndreLDM