以下是我收到错误的代码段,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,以显示它是什么.它实际上并不在我使用的源文件中.因此,缺少分号不是问题.此代码在全球范围内.
这种(初始化)分配在全球范围内是不可能的.
可以初始化数组:
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)