アプリ版:「スタンプのみでお礼する」機能のリリースについて

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'; は
実行されないんですか?

A 回答 (1件)

static char str = 'a';


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

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

お礼日時:2002/02/02 00:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!