VC++のループ制御変数の再定義について – プログラミング – Home

VC++のループ制御変数の再定義につい...
 
通知
すべてクリア

[解決済] VC++のループ制御変数の再定義について


ロングトレイン
 ロングトレイン
(@ロングトレイン)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

関数内でのループ制御用の変数に関する質問です。
VC++で関数内で以下のようなコードを記述した場合、コンパイルエラーとなってしまいます。

void main()
{
//1回目のループ
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}

//2回目のループ
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
}

error C2374: 'i' : 再定義されています。2 回以上初期化されています。
というエラーが発生します。

コーディング規約上、ループ制御用変数 i を関数の先頭で宣言するという対応は出来ません。
また、2回目以降の制御用変数を別名にするという対応もあるのですが、ネストする場合以外は使用しないようにしています。
※実環境では別コンパイラを使用するので、上記のエラーは発生しません。

現在は、以下のようなマクロ定義をすることで一時的に対応しております。
#define for if(0);else for

できれば、ソースコード上に記述しない形で対応したいと考えています。
ご存知の方、ご教授よろしくお願い致します。


引用未解決
トピックタグ
暇人貴子
 暇人貴子
(@暇人貴子)
ゲスト
結合: 22年前
投稿: 11
 

void main(void)
{
{
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
}
//2回目のループ
{
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
}
}
じゃだめですよね・・・


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

#ifdef _MSC_VER
#if _MSC_VER <= 1200
#define for if(0);else for
#endif
#endif

それか、VC7(.Net)をつかうか。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

ANSI 互換スイッチを有効にするとか。


返信引用
ks'
 ks'
(@ks')
ゲスト
結合: 22年前
投稿: 2
 

これではダメなのかな?

void main(){

// 1回目
for(int i = 0; i < 10; i++){
cout << i << endl;
}

// 2回目
for(i = 0; i < 10; i++){
cout << i << endl;
}
}


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

コンパイラオプション/Dを使って
/Dfor=if (false) ; else for
としてやるとか。

> これではダメなのかな?

たぶん,
> ※実環境では別コンパイラを使用するので、上記のエラーは発生しません。
とあるのでダメなのでしょう。


返信引用
ロングトレイン
 ロングトレイン
(@ロングトレイン)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

皆様ありがとうございます。解決することが出来ました。
今後ともよろしくお願い致します。


返信引用
ロングトレイン
 ロングトレイン
(@ロングトレイン)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

すみません。解決時チェックを入れ忘れました。。。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

差し支えなければ、「どう解決したか」の報告をお願いします。


返信引用
ロングトレイン
 ロングトレイン
(@ロングトレイン)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

YuOさんの
>コンパイラオプション/Dを使って
>/Dfor=if (false) ; else for
>としてやるとか。

の方法で解決させていただきました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました