以下に述べるように関数ポインタを引数とする関数を宣言すると、コンパイラはエラーをスローします。誰かがなぜ "void func_dec(void(*)(int)funcptr);"は無効です
void func_dec(int x, void(*)() funcptr);
それが宣言の下に受け入れるのに対し、それは論理的に見えるものの、コンパイラは、元の宣言を認識できなかったのはなぜ
void func_dec(int x, void(*funcptr)());
。
void(*)() funcptr
は、それ自身に無効な構文である、ので
これは文法で指定された構文ではないためです。 –
C言語で関数を宣言するときに、正確に何が働くのかを知っておくことを強く推奨します。アイデアがなければ、それについて読むべきです。私はあなたが達成しようとしていることを理解しておらず、そのような複雑な宣言がなぜ必要なのですか? –
http://cdecl.org/は、複雑なCタイプを構築するのに役立ちます。 –