当我写了一段“意外”的代码并成功编译它并获得了所需的行为时,我遇到了这个问题。后来我注意到更改的奇怪之处,并意识到我使用了完全相反的顺序来执行函数指针的 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/