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

时间:2016-12-26 03:02:56

标签: c++ function pointers void

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

void(*);

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

std::vector<void(*)> myVector;

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

void (*)();

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

void();

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

std::function<void()> func;

我在理解函数指针语法方面遇到了很多麻烦。

感谢。

1 个答案:

答案 0 :(得分:12)

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

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

使用它的上下文非常重要。