[bug#0002] swapにまつわるバグ
(0)
- どんなバグが出て、それをどうやって解決したかをメモしておけば、きっと何かの役に立つ日が来るかもしれない。
- ということでこのシリーズをやっている。
(1)
- 以下のようなシンプルなマクロがある
#define SWPINT(ia, ib) it = ia; ia = ib; ib = it
- これを何としたことか以下のように書き間違えていた。
#define SWPINT(ia, ib) it = ia; ib = ia; ib = it
- どうも挙動が明らかにおかしいと思って、おかしくなったのはどこなのかと巻き戻してみたら、SWPINTがおかしいところまでは突き止めた。しかしそれでもすぐには気づけない。20分くらい悩んでやっとわかった。・・・こんなに簡単なミスなのに!
(2)
- 今回の教訓。
- まあ内容の割に時間がかかっただけで、そんなにひどく手こずったわけじゃない。
- でもなあ、なんかコンパイラがここは怪しいぞとか教えてくれないかなあ。無理かなあ。
- というかスワップ演算子くらいは言語がデフォルトで用意してくれてもよさそうなものだよなあ・・・使用頻度高そうだし。
こめんと欄
|