fj.comp.lang.cの記事<bq1ppd$pve$1@news511.nifty.com>で
        kounoike@mbh.nifty.comさんは書きました。
> しょうもない事を聞くようですが、上のは、
>  (int (*)())(*)()
> と
> typedef int (*fnptr)();
> typedef fnptr (*fnptr_fn)();
> は、同じことである。と言った内容なのでしょうか。それとも、両者は何の関係もな
> く、単なるtypedefの用法を説明したものなのでしょうか。

こーのさんがいいたいのは

(int (*)())(*)()

というキャストを使うよりは

typedef int (*fnptr)();
typedef fnptr (*fnptr_fn)();

と宣言しておいて

(fnptr_fn)

を使うのであれば「まだ、なんか許せる」ということで
しょう。この2つのキャストは同じです。

(int (*)())(*)()

によってキャストされる先の型は

[1] intを返す関数へのポインタ → (int (*)())
[2] …[1]…を返す関数へのポインタ → (…[1]…)(*)() 

になります。typedefを使うことで、(1)と書くところで
はかわりにfnptrと書け、(2)と書くところではfnptr_fn
と書けるわけですね。
-- 
太田純(Junn Ohta) (株)リコー/新横浜事業所
ohta@sdg.mdd.ricoh.co.jp