什么是’void(* old_sigint_handler)(int)’?
这是一个语法问题。 我遇到了这条线:
void (*old_sigint_handler)(int);
我不知道它在做什么。 它似乎是三种类型的串联,没有变量名称。 我很感激澄清!
void (*old_sigint_handler)(int);
这将old_sigint_handler
定义为一个指向函数的指针,该函数接受一个int
并返回void
,即没有值。 old_sigint_handler
周围的括号在old_sigint_handler
是必要的以下内容:
void *old_sigint_handler(int);
声明一个函数old_sigint_handler
,它接受一个int
并返回一个指向void
类型的指针。 这是因为C
中的优先规则。 括号紧密绑定到old_sigint_handler
不是*
使其成为函数而不是指向函数的指针。 阅读本文以精神上解析复杂的C声明 – 顺时针/螺旋规则 。
利用cdecl来了解它的确切含义。 这是C -> English
declare old_sigint_handler as pointer to function (int) returning void
是一个函数指针,带有签名的函数void (int)
这是一个名为old_sigint_handler的变量的变量声明,它可以保存一个函数指针,该函数指向一个接受int并且不返回任何内容的函数(void)。
它是一个名为old_sigint_handler的函数指针的声明,它接受一个int并且不返回任何内容。
它是一个名为old_sigint_handler
的函数指针的声明,它指向一个接受int
并返回void
的函数。