1
(int(*)(void *、void *))(数値?numcmp:strcmp));ポインタによる関数の参照
numcmpとstrcmpは、2つの引数を持つ関数です。
私は条件演算子が何をしているのか理解しています。それは簡単です。
これはnumcmp(void *、void *)またはstrcmp(void *、void *)と評価されることがありますが、その理由はわかりません。特に、: int(*)は私を混乱させます。
[Cでの関数ポインタはどのように動作するのですか?](0120-17753)。 – Siguza
なぜ構文それは(それほど厄介な)方法ですか? –
サイドノート:結果のポインタを呼び出すことはUBです。 'strcmp'のパラメータは' void * 'ではなく、' numcmp'のものでもありません(そうでなければ、条件はコンパイルされません)。もちろん、それはあなたがそのキャストでそれをシャットダウンしなければあなたが得るコンパイラエラーです。 – Quentin