以下是我收到错误的代码段,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,以显示它是什么。它实际上并不在我使用的源文件中。因此,缺少分号不是问题。此代码在全球范围内。
答案 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)
答案 3 :(得分:0)
应该是:
typedef struct{
Sint16 x, y;
Uint16 w, h;
} SDL_Rect;
注意最后的分号。
答案 4 :(得分:0)
在结构的末尾错过了分号:
typedef struct{
Sint16 x, y;
Uint16 w, h;
} SDL_Rect;