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

标签 c syntax

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

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/

相关文章:

c - 使用互斥体的 Pthread 同步未正确同步单词

c - 协调 C 中数组的声明和使用语法

syntax - 命名一个 doxygen @ref

SQL Server : any equivalent of strpos()?

sql - Golang SQL 查询语法验证器

c - 在 C 和 C++ 中声明用户定义类型的不同方法

C 将包含文件路径的字符串传递给 main()

C : Validation in strptime

c++ - 将字符串相关函数从 C++ 转换为 C

java - 将java语法折叠成单行