K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>細かいことで恐縮ですが、Fig2-10で「"&d, %s\n"へのポインタ」とありますが、 >>「"%d, %s\n"へのポインタ」の誤植と思われます。 > >ご指摘ありがとうございます。ミスが多くて申し訳ありません。 >この部分は旧版から変えていないところなので、旧版から20年間発覚しなかった >ミスかと旧版の正誤表を確認したところ、どうも旧版は >・%dであるべきところが&dになっている >・\nが抜けている >というふたつのミスがあり、前者に気づいていながら後者だけ直していたようです。 > >http://kmaebashi.com/seiha/seigo.html#p102 > >何が何だか……(後ほど直します) > >>#define DEBUG_WRITE(...) fprintf(stderr, __VA_ARGS__) >>でもokでした。 >>「debug_write()関数の呼び出しのオーバーヘッドは避けられない(p127)」という >>ことでしたが、fprintf()関数でも同様でしょうか。 > >読み返すと確かにわかりにくいのですが、 >「debug_write()関数の呼び出しのオーバーヘッドは避けることができません。」 >という記述は、いわゆるANSI C(C90)についての記載と思ってください。 >そのすぐ下に、「マクロなら、コンパイル時に完全に抹殺できるのですが、 >ANSI Cまでは、マクロには、可変長引数を渡すことができませんでした。」 >とあるとおりです。 > >ただその下で、 >| C99ではマクロが可変長引数を取ることができるようになったので、 >| 以下のように書けるようになりました。 > >と書いておきながら、わざわざdebug_write()を呼んでいるのはちょっといただけないですね… >(わずかばかりのオーバーヘッドを考えるより、出力先をまとめて切り替えたり >タイムスタンプを足したりする利便性を考えて、私なら、実際にはdebug_write()を >挟みそうな気がしますし、そういう思いだったのかと思いますが) >何かしら補足を考えます。ありがとうございました。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!