我正試圖提高我使用 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.
。uj5u.com熱心網友回復:
這似乎可以作業:
這似乎可以作業。
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};
大多數例子這里通過名字初始化結構成員。
uj5u.com熱心網友回復:
你可以使用compound literal語法來實作類似的功能:
gfx.rect = (SDL_Rect){0,0,1280, 720};
這有一點開銷,即創建一個額外的本地物件型別SDL_Rect,并將其復制到gfx.rect。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306957.html
標籤:
