这是一道语法题。我遇到了这条线:
void (*old_sigint_handler)(int);
我不知道它在做什么。看起来像是没有变量名的三种类型的串联。我将不胜感激!
最佳答案
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
的绑定(bind)比 *
更紧密,使其成为一个函数而不是指向函数的指针。阅读本文以在头脑中解析复杂的 C 声明 - Clockwise/Spiral Rule .
关于c - 什么是 'void (*old_sigint_handler)(int)' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21918574/