[英]Why can't I assign a struct variable using curly brackets {}?
我有以下代碼,為什么Visual Studio在第一個括號{
在playerObj.cropImg = { 0, 0, 45, 32 };
並返回錯誤error C2059: syntax error : '{'
編譯時error C2059: syntax error : '{'
?
#include <SDL.h>
#include <stdio.h>
typedef struct obj
{
SDL_Surface *pSprite;
SDL_Texture *pTexture;
SDL_Rect cropImg;
SDL_Rect pos;
} obj;
obj playerObj;
void playerObj_init(unsigned char * filename, SDL_Renderer * pRenderer)
{
playerObj.cropImg = { 0, 0, 45, 32 };
}
您的代碼嘗試分配 。
初始化是當您為變量提供值作為聲明的一部分時。
賦值是指為已經存在的變量提供新值時; 這發生在語句 (不是聲明)中。
在C90中,括號括起的初始化程序只能在聲明中使用。 在C99中,您可以使用struct類型的文字,但是您必須將類型指定為語法的一部分(要讓編譯器嘗試推導它會太復雜):
playerObj.cropImg = (SDL_Rect) { 0, 0, 45, 32 };
在C90中可行的替代方法是編寫:
SDL_Rect const newRect = { 0, 0, 45, 32 };
playerObj.cropImg = newRect;
並且編譯器應該對其進行優化。
NB。 考慮使用指定的初始化程序來幫助代碼維護。 無論哪種情況,
{ .w = 45, .h = 32 }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.