将函数声明为指针的目的是什么?
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.
所示,一些编译器会对此发出警告
今天我在查看一个名为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.
所示,一些编译器会对此发出警告