c++ - 在对函数指针进行 typedef 时 * 是强制性的吗?

标签 c++ c function function-pointers typedef

当我写了一段“意外”的代码并成功编译它并获得了所需的行为时,我遇到了这个问题。后来我注意到更改的奇怪之处,并意识到我使用了完全相反的顺序来执行函数指针的 typedef。现在我很困惑“意外”错误在语法上是否真的正确。

通常约定:

typedef void* (*_malloc_fail_handler_ptr)(int) __attribute__ ((unused));
_malloc_fail_handler_ptr _malloc_fail_handler = NULL;

我的“意外”代码:

typedef void* (_malloc_fail_handler_ptr)(int) __attribute__ ((unused));
_malloc_fail_handler_ptr* _malloc_fail_handler = NULL;

最佳答案

这是正确的语法。对于第二种情况,_malloc_fail_handler_ptr 的类型是函数,而不是函数指针。那么_malloc_fail_handler_ptr*的类型就是指向函数的指针。所以对于第一种和第二种情况,变量_malloc_fail_handler的类型是一样的。

关于c++ - 在对函数指针进行 typedef 时 * 是强制性的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42301979/

相关文章:

c - 函数不断崩溃且没有错误消息

c++ - libwebsockets.h : Issue with lws_write: C++ string to C conversion and send

c++ - 函数 try block 处理程序是什么?

c - sizeof 运算符如何用于结构

javascript - Base64加密后运行JavaScript代码

mysql - 返回第 5 个对象并很快将其作为一个长整数

c++ - 获取 FILE * 句柄而不实际在磁盘上创建文件

c++ - std::error_code 和 std::error_condition 从相同的值和相同的类别构造总是等价的吗?

c - 将文本文件读入 c 字符串

c - fread/fwrite 没有按预期工作