2016-06-13 4 views
0

SDLライブラリを使用してCでグラフィカルクライアントを作成していますが、SDL_Colorタイプを設定するときに問題があります。CでSDL_Colorを初期化する方法は?

私は

SDL_Color color; 
color = {255, 255, 255}; 
/* rest of code */ 

としての私の変数を宣言し、その後gccが私に語った:

25:11: error: expected expression before ‘{’ token color = {0, 0, 0};

私はいくつかの演算子オーバーロードとC++の場合にはかなり良い答えを見つけましたが、私は、私は本当にない怖いですCでこの問題を解決する方法を理解してください。

答えて

0

このような構造に値を割り当てることはできません。あなただけのあなたの構造を初期化する場合は、この操作を行うことができます。

SDL_Color color = {.r = 255, .g = 255, .b = 255}; 

3 ways to initialize a structureを参照してください:あなたはまた、指定イニシャライザを使用することができます

SDL_Color color = {255, 255, 255}; 

あなたは、その宣言の後、あなたの構造の値を変更したい場合は、あなたがメンバーによって値のメンバーを変更する必要があります。

SDL_Color color; 
color.r = 255; 
color.g = 255; 
color.b = 255; 
+0

あなたができることは次のとおりです: '静的インラインSDL_Color mk_SDL_Color(int r、int g、int b){SDL_Color const c = {r、g、b}; return c;} 'SDL_colorのように使うことができます。 color = mk_SDL_Color(255,255,255); '。 – datenwolf

0

私はあなたがいない割り当てで、唯一の変数の初期化時に中括弧で式を使用することができると思う:

初期化:

SDL_Color color = { 255, 255, 255 }; // By the way, maybe set also color.a 

割り当て(メンバーによるメンバー):

SDL_Color color; 
color.r = 255; 
color.g = 255; 
color.b = 255; 
color.a = 255; 

struct initializationの詳細は、を参照してください。。

関連する問題