void (*pf)(int i){
};

根据 C++11,我不需要尾随的“;”,但 Dev-C++ 不仅会引发警告 - 还会引发错误并中断编译。

但如果我宣布
void pf(int i){
}

不再抛出警告?

最佳答案

你展示的两件事是截然不同的。

void (*pf)(int i){
};

上面将 pf 定义为一个指向函数的指针,该函数接受一个 int 并返回 void ,并且 values 对其进行初始化。分号是 需要 。它与
void (*pf)(int i) = nullptr;

在第二个片段中
void pf(int i){
}
pf 是一个接受 int 并返回 void 的函数。

我猜你的 Dev-C++ 版本不支持 C++11 的统一初始化语法。以下应该工作
void (*pf)(int i) = NULL;

关于c++ - 指向函数需要的指针;定义后,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23743401/

10-11 00:22