ページ 11

switch文でのLANG_CHINESE

Posted: 2020年7月20日(月) 22:36
by パックマン
OSの言語識別子を取得して言語ファイルの読み込みを振り分けている最中なのですが
どうしてもLANG_CHINESEだけ「式が必要です」となりエラーになります

コード:

 
WORD priLangID = PRIMARYLANGID(::GetSystemDefaultLangID()); //主要言語取得
WORD subLangID = SUBLANGID(::GetSystemDefaultLangID()); //サブ言語取得
switch (priLangID) {
case LANG_JAPANESE: {
	//TODO
	break;
}

case LANG_ENGLISH: {
	//TODO
	break;
}

case LANG_CHINESE: {
	switch (subLangID) {
	case SUBLANG_CHINESE_TRADITIONAL:
		//TODO
		break;
	case SUBLANG_CHINESE_HONGKONG:
		//TODO
		break;
	case SUBLANG_CHINESE_SIMPLIFIED:
		//TODO
		break;
	case SUBLANG_CHINESE_SINGAPORE:
		//TODO
		break;
	}
}
  


外国の方のサイトを見ても同じように書いてる人も居るので何が原因か分かりません
お時間がありましたら手解きお願いします

Re: switch文でのLANG_CHINESE

Posted: 2020年7月22日(水) 20:15
by Butter
とりあえず「{」と「}」の数が合ってないと思います
最後にもう1つ「}」を追加したらどうですか?

Re: switch文でのLANG_CHINESE

Posted: 2020年7月24日(金) 03:17
by パックマン
返信ありがとうございます

申し訳ないですが、それは全く関係ないです
挙げる際に消してしまっただけなので

LANG_CHINESEにはSUNLANGとして香港や台湾などの言語が用意されてるのです
そしてLANG_CHINESEを使用するには Use with SUBLANG_CHINESE_* Sublanguage IDsとあるので
記載したようにswitch文内にswitch文で振り分けています

Re: switch文でのLANG_CHINESE

Posted: 2020年7月24日(金) 04:02
by 通りすがり
どの環境でどのようにしてそうなったのか書かないとここの人達は相手してくれないんじゃないかな。

当方のVS2019、C++17環境ではそのコードは通る。
当たり前のようにAtomでもVCodeでもEclipseでも通る。
VSならば不具合も多く立ち上げ直すと整合性チェックが無事通ることもあるのでそちらも試した?
あとは定義表示時に提供ファイル群(API、インターフェース)のコードに不要な文字を打ち込んだり消したりしてる可能性もある。
使用ソフトの再インスコも試してみた?
それとブレースを挙げる際に消してしまったならもっと早く言うべきでは?
ブレースが欠けた状態では「式が必要です」ではなく「一致するトークンが見当たらない」と出るはずだから、コードに間違いがないならソフトウェアの動作に目を向けた方がいい。

Re: switch文でのLANG_CHINESE

Posted: 2020年7月24日(金) 11:55
by あたっしゅ
もう見たかもしれませんが、
https://www.kazetest.com/vcmemo/multi-l ... i-lang.htm

Re: switch文でのLANG_CHINESE

Posted: 2020年7月24日(金) 22:02
by パックマン
VSCodeを再インストールしたところ無事エラーが出なくなりました
ゲームでマウスに色んなキーを割当てているため、関数の定義等を見た際に謝ってサイドボタンを
入力して保存していたのかもしれません
助かりました

Re: switch文でのLANG_CHINESE

Posted: 2020年7月24日(金) 22:05
by パックマン
>>あたっしゅさん

そのサイトのコードをそのまんまコピペしたところエラーが出て、波かっこを追加したりして原因を探っていました
元々のコードがそのサイトのものなので自分で試行錯誤していた名残の波かっこが足りないとかそういったことではなかったのです

通りすがりさんのおかげで無事解決したのでここで閉めさせていただきます
ありがとうございました