什么是'void(* old_sigint_handler)(int)'?

时间:2014-02-20 20:16:50

标签: c syntax

这是一个语法问题。我遇到了这条线:

void (*old_sigint_handler)(int);

我不知道它在做什么。它似乎是三种类型的串联,没有变量名称。我很感激澄清!

6 个答案:

答案 0 :(得分:3)

利用cdecl来了解它的确切含义。它是C -> English

declare old_sigint_handler as pointer to function (int) returning void

答案 1 :(得分:3)

void (*old_sigint_handler)(int);

这将old_sigint_handler定义为指向函数的指针,该函数接受int并返回void,即没有值。 old_sigint_handler周围的括号在这里是必要的以下内容:

void *old_sigint_handler(int);

声明一个函数old_sigint_handler,它接受​​int并返回指向void类型的指针。这是因为C中的优先规则。括号紧密绑定到标识符old_sigint_handler而不是*,使其成为函数,而不是指向函数的指针。阅读本文以精神上解析复杂的C声明 - Clockwise/Spiral Rule

答案 2 :(得分:1)

是具有签名void (int)

的函数的函数指针

答案 3 :(得分:1)

这是一个名为old_sigint_handler的变量的变量声明,它可以保存一个函数指针,该函数指向一个接受int并且不返回任何内容的函数(void)。

答案 4 :(得分:1)

这是一个名为old_sigint_handler的函数指针的声明,它接受一个int并且不返回任何内容。

答案 5 :(得分:1)

这是一个名为old_sigint_handler的函数指针的声明,它指向一个带int并返回void的函数。