ページ 11

else文がifと一致しないです…

Posted: 2011年2月27日(日) 18:45
by 結城
どうも、いつもお世話になってます

今回ちょっと久しぶりにプログラムを組んでいたら、
いつもは遭遇しないエラーに引っかかって困っています

エラーではelse文が if と一致しませんといわれるのですが・・・
自分で調べてみる限りコードはおかしくないはずです、よね?
一応サイトをめぐってみました・・・が、
結局解決できなかったのでスレ立てした次第です
どうかよろしくお願いします

環境:VS2005 C++ WinXP (ライブラリ PING,Zip...?)

以下が問題のコードです

コード:

template <class T>
int _DSF_SEPARATER(HWND hwnd,T x,T y)
{
	if((
		x == _DSFA_XYONLY ||
		x == _DSFA_RECTMODE ||
		x == _DSFA_AUTODIVISION) && (
		y == _DSFB_LPCWSTRTYPE ||
		y == _DSFB_LPTSTRTYPE));
	{
		return x+y;
	}else if((
		y == _DSFA_XYONLY ||
		y == _DSFA_RECTMODE ||
		y == _DSFA_AUTODIVISION) && (
		x == _DSFB_LPCWSTRTYPE ||
		x == _DSFB_LPTSTRTYPE));
	{
		return x+y;
	}else if((
		x == _DSFA_XYONLY ||
		x == _DSFA_RECTMODE ||
		x == _DSFA_AUTODIVISION) && (
		y == _DSFA_XYONLY || 
		y == _DSFA_RECTMODE ||
		y == _DSFA_AUTODIVISION) || (
		x == _DSFB_LPCWSTRTYPE ||
		x == _DSFB_LPTSTRTYPE) && (
		y == _DSFB_LPCWSTRTYPE ||
		y == _DSFB_LPTSTRTYPE))
	{
		MessageBox(
			hwnd,
			L"ERROR",
			L"The same mode repeats in an argument, and it is appointed",
			MB_APPLMODAL);
		return -1;
	}
}
[hr]
S.Hinari(Ange;art)

Re: else文がifと一致しないです…

Posted: 2011年2月27日(日) 18:51
by bitter_fox
Hinari さんが書きました:

コード:

	if((
		x == _DSFA_XYONLY ||
		x == _DSFA_RECTMODE ||
		x == _DSFA_AUTODIVISION) && (
		y == _DSFB_LPCWSTRTYPE ||
		y == _DSFB_LPTSTRTYPE));
	{
		return x+y;
	}else if((
		y == _DSFA_XYONLY ||
		y == _DSFA_RECTMODE ||
		y == _DSFA_AUTODIVISION) && (
		x == _DSFB_LPCWSTRTYPE ||
		x == _DSFB_LPTSTRTYPE));
	{
		return x+y;
	}
ここの条件式を除くと次のようになります。

コード:

	if((
		...));
	{
		return x+y;
	}else if((
		...));
	{
		return x+y;
	}
よく見るとif文の閉じかっこの後すぐに;があります。
これをif文の終わりと判断したので次のelse ifに対応するif文がないと怒られてしまっています。

Re: else文がifと一致しないです…

Posted: 2011年2月27日(日) 18:53
by Ciel
一つ目と二つ目のif文のところにセミコロンがついてしまってますよ。

Re: else文がifと一致しないです…

Posted: 2011年2月27日(日) 19:02
by 結城
あ、本当ですね
すみませんbitter_foxさんcielさん、ご指摘ありがとうございます

それにしても初歩的なミスです・・・