我正在编写这个很棒的应用程序,至少我认为它很棒,在 C 中与 GObject 的完美融合,过了一段时间我开始遇到这个非常非常奇怪的错误。我也相信已经注意到它并不总是出现。然而,这可能只是 IDE 的错。无论如何...
显然,GCC 抱怨:在 '*' 标记之前预期的 ')';这发生在头文件中。
这是相同的头文件。
#pragma once
#include "global.h"
#include "CharcoalApp.h"
GtkListStore *WebsitesListStore;
// that error is reported for this line
void charcoal_websites_list_initialize(CharcoalApp *app);
据我所知,这来自CharcoalApp *app
该函数的参数。
因为我无法真正理解为什么会发生此错误,所以我将包含该CharcoalApp.h
文件。global.h
是一个非常简单的头文件,承载了主要的依赖,主要有GLib、GObject、GThread、GTK+、WebKit等。
木炭应用程序.h
#ifndef __CHARCOAL_APP_H__
#define __CHARCOAL_APP_H__
#include "global.h"
#include "CharcoalDB.h"
#include "CharcoalWindow.h"
#include "CharcoalWebsitesList.h"
G_BEGIN_DECLS
#define CHARCOAL_TYPE_APP (charcoal_app_get_type())
#define CHARCOAL_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), CHARCOAL_TYPE_APP, CharcoalApp))
#define CHARCOAL_APP_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), CHARCOAL_TYPE_APP, CharcoalApp const))
#define CHARCOAL_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), CHARCOAL_TYPE_APP, CharcoalAppClass))
#define CHARCOAL_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), CHARCOAL_TYPE_APP))
#define CHARCOAL_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), CHARCOAL_TYPE_APP))
#define CHARCOAL_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), CHARCOAL_TYPE_APP, CharcoalAppClass))
typedef struct _CharcoalApp CharcoalApp;
typedef struct _CharcoalAppClass CharcoalAppClass;
typedef struct _CharcoalAppPrivate CharcoalAppPrivate;
struct _CharcoalApp {
GObject parent;
CharcoalAppPrivate *priv;
GtkBuilder *ui;
CharcoalDB *db;
// toplevels
GtkWidget *CharcoalWindow;
};
struct _CharcoalAppClass {
GObjectClass parent_class;
};
GType charcoal_app_get_type(void) G_GNUC_CONST;
CharcoalApp *charcoal_app_new(void);
void charcoal_app_quit(CharcoalApp *app);
G_END_DECLS
#endif /* __CHARCOAL_APP_H__ */
谢谢您的帮助!