何よりも好奇心の問題。関数ポインタ付き複数の関数ポインタを型定義なしで1行に宣言するにはどうすればよいですか?
int a = 1, b = 2;
:基本的に私はそれがラインに複数の関数ポインタを宣言することができます場合は、のようなものを知りたいですか? typedef
に頼ることなく
私はvoid (*foo = NULL, *bar = NULL)(int)
を試しました。これはうまくいきませんでした。
何よりも好奇心の問題。関数ポインタ付き複数の関数ポインタを型定義なしで1行に宣言するにはどうすればよいですか?
int a = 1, b = 2;
:基本的に私はそれがラインに複数の関数ポインタを宣言することができます場合は、のようなものを知りたいですか? typedef
に頼ることなく
私はvoid (*foo = NULL, *bar = NULL)(int)
を試しました。これはうまくいきませんでした。
は試してみてください。
void (*a)(int), (*b)(int);
void test(int n)
{
printf("%d\n", n);
}
int main()
{
a = NULL;
a = test;
a(1);
b = test;
b(2);
return 0;
}
EDIT:
は別の形態は、関数ポインタの配列です:
をvoid (*fun[2])(int) = {NULL, NULL};
void test(int n)
{
printf("%d\n",n);
}
int main()
{
fun[0] = NULL;
fun[0] = test;
fun[0](1);
fun[1] = test;
fun[1](2);
}
はい 'test(){}'の後にあなたの宣言を '' void(* a)(int)= test、(* b)(int)= test; '](http:// codepad.org/XkYPuwer) –
@GrijeshChauhan私はちょうど編集した2番目のフォームは、RDが何を望んでいるのだろうと思う。 – vvy
が良いかもしれませんが、優秀な回答です。 –
void (*foo)(int) = NULL, (*bar)(int) = NULL;
またはGrijeshが言うように、次のように
int main(void) {
int a[5], b[55];
int (*aa)[5] = &a, (*bb)[55] = &b;
return 0;
}
同様に、配列の宣言にポインタを追加したいかもしれません: 'int(* a)[5]、(* b)[7];'ここには[コードパスリンクです](http://codepad.org/ –
いいえ、コードパッドのリンクを開いている配列については言及していません。 –
ありがとうGrijesh;) –
私が正しく推測している間、私は(正当な理由で)見たことがない、または前にこれを試したことがあります。 – chris
難読化されたコードの世界では強力です... #defaultを6つのアンダースコアとして表現する必要があります。 –