c - 通过函数在 C 中初始化嵌套 SDL_Rect 结构成员的速记或内联方法
问题描述
我正在尝试提高使用 SDL2 的项目的可读性和整体组织。当涉及到 SDL_Rect 时,我试图了解在初始化嵌套结构的成员时我做错了什么。
这就是我想要实现的目标:
struct gfx {
SDL_Rect rect;
} gfx;
void example()
{
gfx.rect = {0,0,1280,720};
return;
}
但是,这会产生“预期表达式”错误。
所以,我一直在做的,确实有效,但只会造成大量混乱,是这样的:
struct gfx {
SDL_Rect rect;
} gfx;
void example()
{
gfx.rect.x = 0;
gfx.rect.y = 0;
gfx.rect.w = 1280;
gfx.rect.h = 720;
return;
}
是否可以实现如图所示的速记版本,或者这只是它需要的方式?
这是 SDL_Rect 结构定义的链接: https ://www.libsdl.org/release/SDL-1.2.15/docs/html/sdlrect.html
我正在使用 xCode 12.5.1,用 C 语言编写项目,使用 Clang,C99。
解决方案
这似乎有效:
gfx x = {.rect = {.x = 0, .y = 0, .w = 1280, .h = 720}};
这似乎也有效,但可能会导致额外的副本
SDL_Rect r = {.x = 0, .y = 0, .w = 1280, .h = 720};
gfx y = {.rect = r};
这里的大多数示例都按名称初始化结构成员。
推荐阅读
- python - 通过字节串中的套接字加载图像在python中需要永远
- node.js - 压缩文件流node.js
- swift - 如何将项目 HStack 与 VStack SwiftUI 对齐
- python - 如何用从另一个数组中采样的数字填充数组的切片?
- linux - 编写 BASH 命令以打印范围
- android - 快速滚动 RecyclerView 会破坏项目放置
- android - Android不允许拦截触摸事件不适用于简单的Toast Button应用
- python - 如何使用条件 GAN 生成分类音乐
- robot - 寻求帮助使用 kinova 球形 6 自由度机器人设置 DRAKE
- android - 一些 Junit5 测试代码没有运行