c++ - "typedef void (*Something)()"是什么意思

标签 c++ typedef static-members void-pointers

我试图理解这意味着什么,我正在查看的代码有

.h

typedef void (*MCB)();
static MCB     m_process;

.C

MCB Modes::m_process = NULL;

有时当我这样做时

m_process();

我遇到段错误,可能是因为内存被释放,释放内存后如何调试?

最佳答案

它定义了一个函数指针类型。函数返回 void,并且未指定参数列表,因为问题(当前但可能错误地)标记为 C;如果它被标记为 C++,那么该函数将根本不带任何参数。要使其成为不带参数的函数(在 C 中),您可以使用:

typedef void (*MCB)(void);

这是 C 与 C++ 之间存在显着差异的领域之一,C 尚未要求所有函数在定义或使用之前都进行原型(prototype)设计,而 C++ 则这样做。

关于c++ - "typedef void (*Something)()"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582468/

相关文章:

c++ - C++ 中函数指针 typedef 的声明

c++ - this 在静态成员函数的未计算上下文中

c++ - 模板推演失败

C++ typedef a std::pair 然后使用typedef声明一个映射

c++ - 读取存储在多重映射中的私有(private)枚举作为值

c++ - 如何使依赖于模板的 typedef 更方便?

c++ - Windows 与 Linux - 数学结果差异

c++ - 跨命名空间的 typedef 解析

c++ - Visual Studio 的隐式静态成员初始化失败

c++ - 使用 rvct 编译时不调用全局静态成员的构造函数