VC6 Tips / VC6でfor内の一時変数を有効にするマクロ

旧:プログラムを学ぶ上でソースコードがすべての真実である


http://d.hatena.ne.jp/janus_wel/20060126#1138251848
にて
私も同じような経験があった。ドキュメント自体にはエラーチェック機能がないのでバグ*1が起こってもそれ自体に気づかないことが多い。私は経験上、やっぱり慣れてきたらソースコードから学び取るのが一番効率がいいと感じる。*2
すなわち、「プログラムを学ぶ上でソースコードがすべての真実である」と感じている次第である。*3ちなみにプログラムを組む上でそのコンパイラインタプリタ欠陥があったとしてもすべて真実だ!ということである。(そんなコンパイラの為にSTLPortソースコードは回りくどい素晴らしいことをしてくれていたりするのである)
例:
VC6の場合


for(int i=0;;){
}
for(int i=0;;){
}
が変数再定義とされてコンパイルできない。*4 そんな時に使うマクロが以下のような感じのもの。

#define for if(0){}else for
以上、VC6によるバッドノウハウでした^^;

*1:ここでの意味は誤字脱字、事実無根

*2:http://d.hatena.ne.jp/studiokingyo/20060112#p2

*3:完成されたソースコード(有名なライブラリ(zlib,glib)等)を読んで学んでみるのがいいと感じる

*4:C++の規格としては文法的に合っているはずなのだが