*タイトル [#j8f82a6a] -ソースコードを読むだけでは意味がわからない *事例 [#g500aa86] -[[TYPEALIGN()/postgresql-8.1.4]] *課題 [#l5fb7bc7] ソースコードを読むだけでは意味がわからないTYPEALIGN()という処理があった。 内容は以下のような短いものだった。 #define TYPEALIGN(ALIGNVAL,LEN) \ (((long) (LEN) + ((ALIGNVAL) - 1)) & ~((long) ((ALIGNVAL) - 1))) 処理内容をコードからそのまま表現すると、 「LEN+ALIGNVAL-1の値と、ALIGNVAL-1の値の補数の間で、ビットごとのAND演算を行い、その結果を返す。」 となる。 しかし、これでは意味がわからず、上位の処理の概要も書けない。 *解決方法 [#v200e46d] 動作事例をいくつか書いて、動作を考えてみることにした。 すると、LEN以上のALIGNVALの倍数のうち最小の値が得られることに気が付いた。 そこで、概要の欄に、 「LEN以上であるALIGNVALの倍数のうち、最小値を返す。」 と追記した。 そして、備考の欄に動作事例を貼り付けて、説明の根拠とした。 *履歴 [#a42111a6] -作者:[[testnoda/ページ作者]] -日付:2007/2/25