0

我看到了很多关于这个的问题,但我提出了一个问题,因为这与我在其他问题中看到的相去甚远......我认为结构已经很好地初始化了......至少在理论上......

GdkColor 是 GTK 中的一个结构,内部有 4 个 int 数字,所以 {0, 65535, 0, 0} 来初始化它...

我正在使用 gcc 编译器。

所以我有这个结构:

#include <gtk/gtk.h>

typedef struct components{
    GtkWidget *window;
        GtkWidget *table;
            GtkWidget *table_box;
                GtkWidget *describe;
                    GdkColor color;
                    const gchar *gcolor;
                GtkWidget *combo_bboard;
                GtkWidget *combo_bmcu;
                GtkWidget *go;
               GtkWidget *plugin_notebook;
                const gchar *notebook_name_pages[5];
                    gint num_pages;
                    GtkWidget *name_page;
                    GtkWidget *frame;
                    GtkWidget *content;
                        GtkWidget *checkbutton;
}plugin_items;

/* plugin_items items; */
plugin_items items = { NULL, NULL, NULL, NULL, { 0, 65535, 0, 0 }, 
               {"red"}, NULL, NULL, NULL, NULL, { "Features", "Diagram", 
               "Peripherals", "Registers", "ASM Instructions" }, 0, NULL, 
               NULL, NULL, NULL };

   /* THIS Is THE 32 LINE that gcc complains about */
   items.num_pages = (gint)( (sizeof( items.notebook_name_pages)/sizeof( void *));

当我编译时出现一个奇怪的错误:

gcc -c  environment.c -fPIC `pkg-config --cflags gtk+-2.0` 
environment.c:32:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
make: *** [environment.o] Error 1

我很累,但我认为一切都很好......

为什么?上帝啊救救我吧....

有没有人知道如何解决这个问题?我不知道是什么错误...我正在使用 GTK。我无法解决这个问题,我不明白错误:S,我找不到它......我在 DEAD END 中停留了大约两天......

我很感激你的帮助,请伙计们。也许我正在做一些完全愚蠢的事情......但我不知道在哪里:S

提前感谢乔恩

4

1 回答 1

0

除了极少数例外,C 语言不允许函数之外的代码,因此这些代码必须放在函数中。您必须执行以下操作:

void myfunction(){
    items.num_pages = ...
}
于 2013-11-20T12:36:21.423 回答