プログラミングメモ - 「typedef で関数プロトタイプに型付けする」のは常識

2008/05/26

ちょっと前のエントリで,typedef で関数プロトタイプに型付けするなんてすげー!とか言ってたんですけれど,K&R にそのまま書いてありました。

プログラミング言語C 第2版 B.W. カーニハン, D.M. リッチー, 石田晴久 共立出版 1989年

ちょっと長いけれど引用します。

実際に,typedef は #define と似ている。ただ,こちらはコンパイラにより解釈されるから,プリプロセッサの能力を越えるテキストの置換を処理できる点が異なっている。例えば

    typedef int (*PFI)(char *, char *);

は "int を返す(二つの char * 引数をもつ)関数へのポインタ" として型 PFI をつくり出す。この PFI は,第5章の分類プログラムにおいて以下のような文脈で使うことができる。

    PFI strcmp, numcmp;

typedef 宣言を使うのには,単に見やすいというだけでなく,二つの主な理由がある。第1は移植性を高めるため,プログラムをパラメータ化することである。typedef がマシンに依存するようなデータ型を表わすのに使われるとすれば,プログラムを移植するときに typedef のみを変更すればよい。(snip)

typedef の第2の目的は,プログラムのドキュメンテーションをよくすることである。例えば,Treeptr と呼ばれる型は複雑な構造体へのポインタとしてのみ宣言されたものより理解しやすいであろう。

まだまだ修行が足りないなぁ……。ちょと前に xmlrpc-c も読んでたんですけど,ここでも使われてたし,普通にやってることなんですね。

Site Navigation
SNS Accounts (@aian)

普段はここら辺に住んでいます.