• ベストアンサー

static で宣言

LRESULT CALLBACK WinProc(HWND hWnd, UINT msg,WPARAM wP, LPARAM lP){ static char str = 'a'; 1回目の WinProc() 実行の時しか static char str = 'a'; は実行されない。 LRESULT CALLBACK WinProc(HWND hWnd, UINT msg,WPARAM wP, LPARAM lP){ char str = 'a'; としても、1回目の WinProc() 実行の時しか char str = 'a'; は 実行されないんですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

static char str = 'a'; は関数の処理の記述ではなく、static変数の初期化を示すsテトメントです。 したがって、「1回目の WinProc() 実行の時」というよりも、プログラム 起動時に1回実行されるだけです。 char str = 'a'; も初期化ステートメントですが、こちらは変数の有効範囲がその関数の中だけ ですので、WinProc() 実行時に毎回実行されます。ただし、関数から出ると 変数は消えてしまいます。

A__
質問者

お礼

ありがとうございます。 char str = 'a'; なら WinProc( ) を実行するだびですね。

関連するQ&A