/ 最近 .rdf 追記 編集 設定 本棚

脳log[20140219]



2014年02月19日 (水) 『Making Software』28章、498ページ。例によって本質的な部分には触れない(が、コピペは悪なのか?という興味深い内容。というのも、過去にこう書いてるから「コピペコード率高し(だが構わない。分岐直後なので当然のこと。」)。コピペが疑われる二つの関数(static PyObject * py_new_Range_object (GnmRange const *range) {...} と static PyObject * py_new_RangeRef_object (const GnmRangeRef *range_ref){...})に関して続く文章が「1つめの関数の引数はオブジェクトへの定数ポインタになっていますが、2つめの関数では定数オブジェクトへのポインタなのです。後者は、オブジェクトを渡すけれども、渡された側で変更されないことを保証したい場合の一般的な書き方です。一方前者は、ポインタ引数が変更されないことは前提としますが、そのポインタが指す先のオブジェクトについては何の保証もしません。」なのだけど、コードと説明が合っていない。GnmRange const *rangeも const GnmRangeRef *range_refも定数オブジェクト(const C struct)へのポインタであって、定数ポインタはどこにもない。関数本体で PyObject_NEWに続く開きかっこが抜けてるのと合わせて、どこかでコードを写し間違えたんだろうか。■constの位置、開きかっこ抜け、) と { の間のスペースの一貫性のなさまで含めて、本に載ってたのとこの PDFのコードは同じだ>「Lecture Notes」。原著からなのかな。