使用const char * names []初始化一个struct

时间:2013-11-13 02:12:59

标签: gcc struct const

我看到了很多关于此问题的问题,但我提出了一个问题,因为这与我在其他问题中看到的情况相差甚远......我认为sctruct已经初步完成了......至少是teorically ......

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

提前谢谢 jonh

1 个答案:

答案 0 :(得分:0)

除了极少数例外,C语言不允许代码在函数外部,因此这段代码必须包含在函数中。你必须做类似的事情:

void myfunction(){
    items.num_pages = ...
}