C - 调用使用没有参数的参数声明的函数?

时间:2015-12-04 21:27:46

标签: c function void sigaction

我试图了解具有以下行的代码:

void terminate_pipe(int);
code code code...
struct sigaction new_Sigiterm;
new_Sigiterm.sa_handler = terminate_pipe;

我的问题是:

  • 调用这样的函数是什么意思?它会去 只需将NULL作为参数?

  • 它是无效的,所以new_Sigiterm.sa_handler无论如何都是NULL

感谢。

3 个答案:

答案 0 :(得分:3)

new_Sigiterm.sa_handler很可能是指向函数的指针。通过运行

new_Sigiterm.sa_handler = terminate_pipe;

它类似于说

new_Sigiterm.sa_handler = &terminate_pipe;

(与指针一样)。这不是运行函数,它只是制作一个指向函数的指针,如果你"运行"指针,指向的函数将运行。

这是如何声明函数指针:

void function(int x);

int main()
{
    //Pointer to function
    void (*foo) (int);

    //Point it to our function
    foo = function;

    //Run our pointed function
    foo(5);
}

More info about function pointers

答案 1 :(得分:1)

这个赋值的代码是设置一个处理程序(有时称为函数指针):基本上是在给定时间运行的函数的地址。

C中的语法是命名函数,但不要将()放在最后。返回函数的地址。

new_Sigiterm.sa_handler = terminate_pipe;

答案 2 :(得分:0)

  1. void terminate_pipe(int);没有调用函数,它是函数的Forward declaration
  2. new_Sigiterm.sa_handler sa_handlerFunction Pointer