スタートと[]
と()
バインド*
前に、そう*a[]
は、ポインタの配列であることを思い出して、あなたの方法を動作し、(*a)[]
は*f()
がポインタを返す関数である、配列へのポインタである、と(*f)()
関数へのポインタです:
signal -- signal
signal( ) -- is a function
signal( sig, ) -- with a parameter named sig
signal(int sig, ) -- of type int
signal(int sig, func ) -- and a parameter named func
signal(int sig, (*func) ) -- which is a pointer
signal(int sig, (*func)( )) -- to a function
signal(int sig, (*func)(int)) -- taking an int parameter
signal(int sig, void (*func)(int)) -- and returning void
*signal(int sig, void (*func)(int)) -- returning a pointer
(*signal(int sig, void (*func)(int)))( ) -- to a function
(*signal(int sig, void (*func)(int)))(int) -- taking an int parameter
void (*signal(int sig, void (*func)(int)))(int); -- and returning void
signal
仲間信号sig
とシグナルハンドラ関数func
は、古いシグナルハンドラ関数へのポインタを返します。
void new_interrupt_handler(int sig)
{
... // do something interesting with interrupt signal
}
int main(void)
{
void (*old_interrupt_handler)(int);
...
/**
* Set up our new interrupt handler
*/
old_interrupt_handler = signal(SIGINT, new_interrupt_handler);
...
/**
* Restore original interrupt handler
*/
signal(SIGINT, old_interrupt_handler);
...
}
しかし、これは私がhttp://www.joyofprogramming.com/Docs_ColumnArticles/36-JoP-Dec-09.pdfから混乱しているところです。 –
'typedef int foo(void)':fooは関数へのポインタですしかし、 'foo x 'を使うことができるので、それをショートカットして関数と言うことができます。 x(); ' – Benoit
@Benoitあなたはあなたの答えとしてそれを追加できますか? –