パスワードを忘れた? アカウント作成
397873 journal

tarosukeの日記: 例えば

日記 by tarosuke

カーネルのどこかでぬるぽを踏んでいるとする。
で、マップファイルを頼りにその関数を突き止めたとする。
でも、その関数は往々にしてぬるぽを食らっているだけだったりする。
どこかにぬるぽを食わせているバカがいるはずだ。

こんな時、ぬるぽを食らっている関数のプロトタイプがヘッダにあるなら関数
を引数チェックするマクロで置き換えてやればバカがどこにいるのか発見でき
る。

具体的には

int hoge(huga* abeshi);

なプロトタイプがあったら*その後*に

#define hoge(abeshi) ( !(abeshi) ?
        printf(__FILE__":%d:バカ発見!\n", __LINE__), 0 :
        hoge(abeshi) )

な行を追加するという寸法。
2行目の0はhogeが何かだめぽ時に返す値にしたりすればよい。
要は引数に問題がある場合はassertを関数の外でやると効果的って事だな。

というのをさっき思い付いたか思い出したかしたのでメモしてみる。

で、適用しようとしたのだが...先客がいた。__Pだ。むむん。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...