2009-05-03 11 views
10

例:関数(それは関数...とint)とintをとる関数をとる関数です。引数として独自の型の関数をとる関数ポインタを型定義するにはどうすればよいですか?

ここでは、(...)が再帰的に爆発します。これができない、または別の構文がある根本的な理由はありますか?それはキャストなしで可能なはずです。私は本当にディスパッチテーブルを渡そうとしていますが、このタイプを渡すことができたら、それを理解することができます。

+0

これは再帰的に爆発するのですか、または "..."をvarargとして解釈しますか? –

+0

私はこれとほぼ同じようにSOの質問を見ましたが、私はそれを見つけることができません。 –

+0

http://stackoverflow.com/q/793449/10396 – AShelly

答えて

10

あなたは構造体に関数ポインタをラップすることができます

struct fnptr_struct; 
typedef void (*fnptr)(struct fnptr_struct *); 
struct fnptr_struct { 
    fnptr fp; 
}; 

は、私は、これは鋳造で改善されているかはわかりません。私はそれが構造体なしでは不可能だと思っています。なぜなら、C言語では型を定義する必要があり、typedefの構文が不透明であるためです。

+0

解決策があります。悲しいことに、「うまく動作しません」。ああ、遺産: - / – HostileFork

6

直接することはできません。あなたの唯一のオプションは、関数ポインター引数に不特定の引数を受け入れるか、または関数ポインタを含む構造体へのポインターをDave suggestedとして受け入れることです。

関連する問題