这是一个语法问题。我遇到了这条线:
void (*old_sigint_handler)(int);
我不知道它在做什么。它似乎是三种类型的串联,没有变量名称。我很感激澄清!
答案 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
的函数。