minetの日記: for文が泣いている 5
日記 by
minet
for (;;) { このブロックは無限ループ }
for (;0;) { このブロックは決して実行されない }
前者はたまに見かけるけど、後者の書き方を先日初めて見かけた。広域のコメントアウト代わりらしい。
実行はされないけど中でいろいろ記述できたり、コードとしては生きてるからエディタの文法支援が効いてリファクタリングしやすかったり、ただのコメントアウトより嬉しいらしい。なるほど。
while(1)、while(0)と書くより可愛いような気もする。
甘かったか (スコア:1)
前世紀に for(;_;) で結構うけたものだったが宣言が必要という点でスマートではなかったか。
警告されない? (スコア:1)
最近のVisual stdioだと、実行されないコードってマーク付かないかな?
デバッグ用に if (false) みたいなコードを置くと怒られる。
単純にコメントアウトしておくと、文法チェックしてくれないし、、、
で上記の例だと、文法チェックされそうだから、単なるコメント書く訳にはいかなそう。
良いのか悪いのか?
Re:警告されない? (スコア:1)
警告されますね。逆に考えるとこの手の方法で『コメントアウト』している箇所がすぐ見つけられて良い?
C言語のマクロ定義は (スコア:0)
do { 一度だけ実行されるブロック } while(0);
というのが使われることがあります。関数形式のマクロを定義するときに,末尾にセミコロンをつけても構文エラーにならないようにするため。
Re:ちがうちがう (スコア:0)
ちがうちがう、そうじゃない。