for文と変数有効範囲 – プログラミング – Home

通知
すべてクリア

[解決済] for文と変数有効範囲


矢野原
 矢野原
(@矢野原)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

環境は VC++ 6.0 WinXP です
MFC Wizard でダイアログのスケルトンをつくり
OKボタンのもとに

void CDtestDlg::OnOK()
{
int total = 0;

for(int i=0;i<10;i++){total += i;}
i=3;
}

をつくってコンパイルすると通ってしまうのですが
そうではなくて
変数 i の有効範囲がfor文に納まるようにする
なにか方法がありましたら
お教え願えませんでしょうか


引用未解決
トピックタグ
けろっぴ3ダース軍曹
 けろっぴ3ダース軍曹
(@けろっぴ3ダース軍曹)
ゲスト
結合: 17年前
投稿: 2
 

スコープの話でしょうか

int total = 0;

{
for(int i=0;i<10;i++){total += i;}
}
i=3;

これならエラーになります。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

> 変数 i の有効範囲がfor文に納まるようにする
のが何より優先されるのであれば
・VC++6 を捨てて VS2003/2005/Orcas に移行する
・オプション -Za をつけて MFC を捨てる
あたりが選択肢になる
そもそもサポートなどとっくになくなっている VC++6 を使っていることが間違いだと思
わないか?

VC++6 を使い続けるのが優先されるのであれば
・そんな瑣末なところは無視する
という選択肢もあり

小細工で済ませるなら
#define for if (0) {} else for
というのが常套手段だけど影響範囲がでかすぎる可能性があってオススメしないかな。
stdafx.h 中にこれを書くのは危険すぎるしな。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

もともと、VC++6.0のコンパイラは古いので規格に対する準拠率も
最新のコンパイラに比べて低いですし、新しく追加された部分なんかは
対応されているはずも有りません。

というわけで、VC++6.0を使い続けなくてはならないわけがあるのであれば、
その辺は目をつぶるのが得策でしょうね。
実際の話、このスコープの話はあまりインパクトがある内容だとは思えませんし。

最新の環境を使う事が可能ならそっちを使った方が幸せになれます。
C++だけの話ならExpressEdtionを使えば、最新のコンパイラがただで手に入りますし。

どうしてそこにこだわるのかも書いた方が適切なアドバイスがもらえるかもしれません。


返信引用
矢野原
 矢野原
(@矢野原)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

いろいろありがとうございました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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