case でローカル変数の初期化がとばされた というエラーがでてしまいます。
ヘルプで見ると、C++だろうがswitch内で初期化はできないだろと書いてあります。これってどういうことでしょうか?
それだけではわかりません。
どういうことかと言われれば、ヘルプに書かれているとおりとしかいえません。
下のプログラムです。ペコm(_ _;m)三(m;_ _)mペコ
MSG_CON_EXE_CLIENTやMSG_CON_EXE_SERVERはヘッダーで定義されています。
switch( ExeID ){
case MSG_CON_EXE_CLIENT:
AnsiString account = message->ReadText();
AnsiString password = message->ReadText();
long userID;
break;
case MSG_CON_EXE_SERVER:
break;
case 2:
int result=2;
default:
AppUserLoginProc(Socket, result, ExeID, AppVer, fromUserID, fromGroupID);
break;
}
例えば、case 2に書かれているint result=2;は、switch文を抜けると使えませんよ。
switchの前に定義しておく必要があります。
同じく、accountとpasswordも。
念のため。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 1;
{
int a = 2;
printf("a=%d\n", a);
}
printf("a=%d\n", a);
return 0;
}
この実行結果が、
a=2
a=1
となることはわかりますか?
#include<stdio.h>
#include<stdlib.h>
int main()
{
{
int a = 2;
printf("a=%d\n", a);
}
printf("a=%d\n", a);
return 0;
}
この場合に、コンパイルエラーが出る理由はわかりますか?
(‾∧‾)(_ _)フムフム・・・
Switch文の中で定義した変数は、その中でしか使えないんですね。
ローカル変数の初期化がとばされたというかき回しはちょっとなっとくできません。