C数组结构语法错误

yas*_*sar -1 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;
Run Code Online (Sandbox Code Playgroud)

以下是我编译它的方法:

gcc -march=native -static-libgcc -o sprite sprite.c functions.o -L/usr/lib -lSDL -lpthread -lm -ldl -lpthread -lSDL_image
Run Code Online (Sandbox Code Playgroud)

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

编辑

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

hmj*_*mjd 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. */
                    };
Run Code Online (Sandbox Code Playgroud)

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

SDL_Rect clips[4] = {
                        { .x = 0, .y = 0, .w = 100, .h = 100 }
                    };
Run Code Online (Sandbox Code Playgroud)