将函数声明为指针的目的是什么?

What is the purpose of declaring a function as a pointer?

今天我在查看一个名为CrossWindow-Graphics 的项目的源代码时,看到了一个有趣的函数声明。该代码似乎被声明为函数指针。这是我写的一个类似的例子。

#include <iostream>
using namespace std;

void (*Test())
{
    cout << "Test Called!" << endl;
}

int main()
{
     Test();
     return 0;
}

我的问题是为什么 C++ 允许这样做。我想它与函数指针有关。我记得 typedef 实际上只是创建一个变量,变量的名称成为新类型,所以我想这与创建“变量”一样,但它指向代码。即使那是正确的想法,这样做的目的是什么?

您在这里真正做的就是添加一对额外的 (),它什么都不做。 我们可以编写与

相同的函数
void* Test() { ... }

这是一个return是void*的函数。

所以该函数应该有一个 return 语句,其中它 return 是一个空指针。如 here.

所示,一些编译器会对此发出警告