無限ループを while ( true ) と書いたらいけない理由がわかりません。

解決


みりん  2009-03-25 01:49:10  No: 69863

バグを減らすために
無限ループは while ( true ) とかかずに for ( ; ; ) と書くようにと、
最近よく言われるのですが、
なんで while ( true ) と書いてはいけないのかさっぱりわかりません。
どなたか教えていただけませんでしょうか?


επιστημη  URL  2009-03-25 02:04:47  No: 69864

> 無限ループは while ( true ) とかかずに for ( ; ; ) と書くようにと、
> 最近よく言われるのですが、

誰から? 
「なんで for(;;) だとバグが減るの?」って訊かなかったんですか?

> なんで while ( true ) と書いてはいけないのかさっぱりわかりません。

僕にもわかりません。どっちも同じだと思います。


みりん  2009-03-25 02:14:00  No: 69865

ご回答ありがとうございます。

>誰から? 
>「なんで for(;;) だとバグが減るの?」って訊かなかったんですか?
上司から言われているのですが、
なんか有名なコーディング規約があって、
それにそう書いてあるらしいからみたいなことを言っていました。
( 上司はどこかで小耳にはさんだらしいです )

自分でも google などで検索してみましたが、
明確な理由を見つけ出すことができませんでした。


επιστημη  URL  2009-03-25 02:30:48  No: 69866

> なんか有名なコーディング規約があって、
> それにそう書いてあるらしいからみたいなことを言っていました。

MISRAかしら? MISRAにそんなルールはなかったはずだけど。
※ ウラ取ってください。是非。 
※ 小耳に挟んだ程度の情報を鵜呑みにするのは危険です。ハジかきます。

「TRUEと==比較するな」てーのはあるけどね。
こいつを拡大解釈したんかな?


みりん  2009-03-25 02:53:20  No: 69867

どうもこういうことらしいです。

1) コーディング規約の話になる
2) こんな規約、あんな規約があるらしいという話になる
3) コンパイラの警告が出ないようにしようということになる
4) VC++2005 だと while ( true ) で警告がでる
5) なので while ( true ) を for ( ; ; ) で置き換えようということになる

コンパイラの警告 (レベル 4) C4127
http://msdn.microsoft.com/ja-jp/library/6t66728h.aspx


επιστημη  URL  2009-03-25 04:59:27  No: 69868

なるほどー。
while ( true ) での警告が出ない程度に warning-lebel を
緩くすると他の警告も出なくなるから使うな、と。


みりん  2009-03-25 19:38:52  No: 69869

解決とさせていただきます。
επιστημηさん、お騒がせ致しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加