我試圖從GNOME2端口https://github.com/alexkay/xmonad-log-applet到MATE,到目前爲止我已經得到配置等,我正在嘗試構建。你可以在這裏找到我的修改:https://github.com/geniass/xmonad-log-applet。當我運行make
,它開始建設,但在最後一行它給了這些錯誤:「預期的聲明說明符」使用GCC
main.c:92:39: error: expected declaration specifiers or ‘...’ before string constant
main.c:92:65: error: expected declaration specifiers or ‘...’ before ‘(’ token
main.c:92:84: error: expected declaration specifiers or ‘...’ before string constant
main.c:92:103: error: expected declaration specifiers or ‘...’ before ‘xmonad_log_applet_factory’
main.c:92:130: error: expected declaration specifiers or ‘...’ before ‘(’ token
我在這裏看到計算器上有不少類似的問題,但他們大多是要離開了大括號或方法原型返回類型。我在這裏看不到,但也許我錯過了一個?除了這種可能性之外,我完全不知道什麼是錯的。這些錯誤是完全沒有意義對我
這裏是爲了清楚起見移除了IFDEF的(給出了同樣的錯誤)的main.c:
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>
#include <dbus/dbus-glib.h>
#include <mate-panel-applet.h>
static void signal_handler(DBusGProxy *obj, const char *msg, GtkWidget *widget)
{
gtk_label_set_markup(GTK_LABEL(widget), msg);
}
static void set_up_dbus_transfer(GtkWidget *buf)
{
DBusGConnection *connection;
DBusGProxy *proxy;
GError *error= NULL;
connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
if(connection == NULL) {
g_printerr("Failed to open connection: %s\n", error->message);
g_error_free(error);
exit(1);
}
proxy = dbus_g_proxy_new_for_name(
connection, "org.xmonad.Log", "/org/xmonad/Log", "org.xmonad.Log");
error = NULL;
dbus_g_proxy_add_signal(proxy, "Update", G_TYPE_STRING, G_TYPE_INVALID);
dbus_g_proxy_connect_signal(
proxy, "Update", (GCallback)signal_handler, buf, NULL);
}
static gboolean xmonad_log_applet_fill(MatePanelApplet *applet)
{
mate_panel_applet_set_flags(
applet,
MATE_PANEL_APPLET_EXPAND_MAJOR |
MATE_PANEL_APPLET_EXPAND_MINOR |
MATE_PANEL_APPLET_HAS_HANDLE);
mate_panel_applet_set_background_widget(applet, GTK_WIDGET(applet));
GtkWidget *label = gtk_label_new("Waiting for Xmonad...");
gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
set_up_dbus_transfer(label);
gtk_container_add(GTK_CONTAINER(applet), label);
gtk_widget_show_all(GTK_WIDGET(applet));
return TRUE;
}
static gboolean xmonad_log_applet_factory(
MatePanelApplet *applet, const gchar *iid, gpointer data)
{
gboolean retval = FALSE;
if(!strcmp(iid, "XmonadLogApplet"))
retval = xmonad_log_applet_fill(applet);
if(retval == FALSE) {
printf("Wrong applet!\n");
exit(-1);
}
return retval;
}
MATE_PANEL_APPLET_OUT_PROCESS_FACTORY("XmonadLogAppletFactory", PANEL_TYPE_APPLET, "XmonadLogApplet", xmonad_log_applet_factory, NULL);
您的錯誤在第92行。 您應該告訴我們哪一行是92 ...否則我們必須猜測! – abelenky
OK線92是最後一行,'MATE_PANEL_APPLET_OUT_PROCESS_FACTORY( 「XmonadLogAppletFactory」,PANEL_TYPE_APPLET, 「XmonadLogApplet」,xmonad_log_applet_factory,NULL);' – geniass
也'MATE_PANEL_APPLET_OUT_PROCESS_FACTORY'就是創建一個main方法的宏,源可能在這裏:HTTPS:/ /github.com/mate-desktop/mate-panel/blob/master/libmate-panel-applet/mate-panel-applet.h – geniass