C数组结构语法错误

时间:2012-03-06 22:53:17

标签: c syntax

以下是我收到错误的代码段,SDL_Rect的定义是从文档中复制的:

typedef struct{
  Sint16 x, y;
  Uint16 w, h;
} SDL_Rect;


SDL_Rect clips[4];

clips[0].x = 0;
clips[0].y = 0;
clips[0].w = 100;
clips[0].h = 100;

以下是我编译的方法:

gcc -march=native -static-libgcc -o sprite sprite.c functions.o -L/usr/lib -lSDL -lpthread -lm -ldl -lpthread -lSDL_image

以下是我收到的错误:expected '=', ',', ';', 'asm' or '__attribute__' before '.' token每行剪辑[..]。我试过在剪辑周围放置paranthesis [..]但它也没有用。顺便说一句,这很简单。不是C ++。

修改

我已经从SDL的文档中复制了SDL_Rect,以显示它是什么。它实际上并不在我使用的源文件中。因此,缺少分号不是问题。此代码在全球范围内。

5 个答案:

答案 0 :(得分:5)

此(初始化)分配在全球范围内是不可能的。

可以初始化数组:

SDL_Rect clips[4] = {
                        { 0, 0, 100, 100 }, /* Element 0 initial values */
                        { 1, 1, 200, 200 }  /* Element 1 initial values */
                                            /* Element 2 and 3 unspecified so
                                               zero initialised. */
                    };

如果符合C99的编译器,您可以显式声明要初始化的变量:

SDL_Rect clips[4] = {
                        { .x = 0, .y = 0, .w = 100, .h = 100 }
                    };

答案 1 :(得分:1)

缺少一个;在SDL_Rect之后:

typedef struct{ Sint16 x, y; Uint16 w, h; } SDL_Rect;

答案 2 :(得分:0)

你似乎错过了一个;在结构定义中的SDL_Rect之后。

答案 3 :(得分:0)

应该是:

typedef struct{
Sint16 x, y;
Uint16 w, h;
} SDL_Rect;

注意最后的分号

答案 4 :(得分:0)

在结构的末尾错过了分号:

typedef struct{
  Sint16 x, y;
  Uint16 w, h;
} SDL_Rect;