0

これについて多くの質問を見ましたが、これは他の質問で見たものとはかけ離れているため、質問をしています...構造は十分に初期化されていると思います...少なくとも理論的には...

GdkColor は、内部に 4 つの int 数値を持つ GTK の構造体であるため、{ 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、そして私はそれを見つけることができません...私は約2日間デッドエンドにとどまります...

皆さんの助けに感謝します。たぶん私は完全にばかげたことをしているのかもしれません...しかし、どこにあるのかわかりません:S

前もってありがとうジョン

4

1 に答える 1

0

ごくわずかな例外を除いて、C 言語では関数外のコードが許可されていないため、このコードは関数内に配置する必要があります。次のようなことをしなければなりません:

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