バグを減らすために
無限ループは while ( true ) とかかずに for ( ; ; ) と書くようにと、
最近よく言われるのですが、
なんで while ( true ) と書いてはいけないのかさっぱりわかりません。
どなたか教えていただけませんでしょうか?
> 無限ループは while ( true ) とかかずに for ( ; ; ) と書くようにと、
> 最近よく言われるのですが、
誰から?
「なんで for(;;) だとバグが減るの?」って訊かなかったんですか?
> なんで while ( true ) と書いてはいけないのかさっぱりわかりません。
僕にもわかりません。どっちも同じだと思います。
ご回答ありがとうございます。
>誰から?
>「なんで for(;;) だとバグが減るの?」って訊かなかったんですか?
上司から言われているのですが、
なんか有名なコーディング規約があって、
それにそう書いてあるらしいからみたいなことを言っていました。
( 上司はどこかで小耳にはさんだらしいです )
自分でも google などで検索してみましたが、
明確な理由を見つけ出すことができませんでした。
> なんか有名なコーディング規約があって、
> それにそう書いてあるらしいからみたいなことを言っていました。
MISRAかしら? MISRAにそんなルールはなかったはずだけど。
※ ウラ取ってください。是非。
※ 小耳に挟んだ程度の情報を鵜呑みにするのは危険です。ハジかきます。
「TRUEと==比較するな」てーのはあるけどね。
こいつを拡大解釈したんかな?
どうもこういうことらしいです。
1) コーディング規約の話になる
2) こんな規約、あんな規約があるらしいという話になる
3) コンパイラの警告が出ないようにしようということになる
4) VC++2005 だと while ( true ) で警告がでる
5) なので while ( true ) を for ( ; ; ) で置き換えようということになる
コンパイラの警告 (レベル 4) C4127
http://msdn.microsoft.com/ja-jp/library/6t66728h.aspx
なるほどー。
while ( true ) での警告が出ない程度に warning-lebel を
緩くすると他の警告も出なくなるから使うな、と。
解決とさせていただきます。
επιστημηさん、お騒がせ致しました。
ツイート | ![]() |