C++中的void(*)是什么意思吗?

Zeb*_*ish 5 c++ pointers function void

我正在尝试理解C++函数指针语法.在我输入的Linux上的Eclipse中:

void(*);
Run Code Online (Sandbox Code Playgroud)

它突出显示了带有语法错误消息的语句,但它让我编译它并运行程序.然后在Visual Studio上我尝试了它并且它不会编译,说"预期表达式".然而,当我这样做时,奇怪的是:

std::vector<void(*)> myVector;
Run Code Online (Sandbox Code Playgroud)

它在Visual Studio上编译得很好.还有几个在线编译器void(*); 在它自己的工作正常.我知道:

void (*)();
Run Code Online (Sandbox Code Playgroud)

...是一个函数指针和..

void();
Run Code Online (Sandbox Code Playgroud)

...是一个函数签名,这就是为什么你可以这样做的原因:

std::function<void()> func;
Run Code Online (Sandbox Code Playgroud)

我在理解函数指针语法时遇到了很多麻烦.

谢谢.

Som*_*ude 12

请记住,括号可用于更改某些事物的优先级.这就是为什么你在星号周围有括号void (*)()因为它与它非常不同void *().

void(*)括号的情况下是这样的优先级改变括号.但它们不是必需的.的类型void(*)void*,简单明了.

您使用它的上下文非常重要.