g_slice_new不接受我的结构类型

时间:2009-07-28 14:25:20

标签: c gtk glib gtk2

这就是我构建它的方式:gcc pkg-config --cflags --libs gtk+-2.0 -o spawn spawn_with_pipes.c

在下面示例的片段中,我收到一条错误:“数据 - 它引用数据= g_slice_new(数据)之前的语法错误;

#include <gtk/gtk.h>

typedef struct
{
    /* Buffers that will display output */
    GtkTextBuffer *out;
    GtkTextBuffer *err;

    /* Progress bar that will be updated */
    GtkProgressBar *progress;

    /* Timeout source id */
    gint timeout_id;
}Data;

data= g_slice_new(Data); //error here

1 个答案:

答案 0 :(得分:3)

函数外的初始函数必须是常量表达式。你不能在其中调用一个函数。

此外,代码中的变量“data”是一个int,g_slice_new的返回值是gpointer。

您需要更改“数据”的定义并将初始化移至main:

gpointer data;

int main(int argc, char *argv[])
{
    ...
    data = g_slice_new(Data);