1

尝试编译我编写的一些代码时,我继续收到此错误,文件中的位置完全没有帮助。这使用 gtk 2.0。

以下是我在编译时收到的内容:

charles@draton-generico:~/Documents/C89$ gcc -xc -ansi -g bahbahbah.c -o bahbahbahpkg-config --cflags --libs gtk+-2.0

bahbahbah.c:在函数'main'中:

bahbahbah.c:28:1:错误:“,”标记之前的预期表达式

以下是我要编译的代码:

#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

void closure(void)
{
    gtk_main_quit();
    printf("gtk_main_quit() has been called.\n");
}

void main(int argc, char* argv[])
{
    gboolean check = gtk_init_check(&argc, &argv);
    if (check == FALSE)
    {
        printf("Failed to initialize toolkit.\nTerminating.\n");
        exit(EXIT_FAILURE);
    }
    else
    {
        printf("Initialized toolkit.\n");
        GtkWidget* main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title((GtkWindow*)main_window, "BLAH");
        gtk_window_set_default_size((GtkWindow*)main_window, 700, 700);
        g_signal_connect(main_window, "delete-event", closure, void);
        gtk_widget_show(main_window);
        printf("Window created, sleeping in gtk_main().\n");
        gtk_main();
    }       
    printf("Exiting.\n");
    exit(EXIT_SUCCESS);
}

请帮忙。:(

4

2 回答 2

5

在第 28 行使用NULL替换void

g_signal_connect(main_window, "delete-event", closure, NULL);
于 2012-12-12T01:36:12.390 回答
0

void是一个Key-word!有以下描述g_signal_connect()

#define             g_signal_connect(instance, detailed_signal, c_handler, data)

Connects a GCallback function to a signal for a particular object.

The handler will be called before the default handler of the signal.

instance :
    the instance to connect to.

detailed_signal :
    a string of the form "signal-name::detail".

c_handler :
    the GCallback to connect.

data :
    data to pass to c_handler calls.

Returns :
    the handler id

所以,你只想不向这个函数传递任何东西?那么你应该使用NULL.

于 2012-12-12T01:52:15.880 回答