我希望能够做这样的事情:
void test();
void (*testPointer)() = SomethingThatReturnsAFunctionPointer();
test = testPointer;
我想做一些功能类似于实现openGL标头的方法,在该方法中声明函数原型,然后将函数设置为指针。换句话说,我想知道一些openGL头文件如何既可以加载openGL函数,又可以同时具有这些函数的原型。
最佳答案
函数不是变量;函数不是变量。他们不能被分配给。
但是,可以将函数隐式转换为指向这些函数的指针。函数本身仍然不是变量,但是您可以将该函数指针分配给为该函数指针适当键入的变量。
我想知道一些openGL头文件如何既可以加载openGL函数,又可以同时具有这些函数的原型。
我不知道您要说的是哪个特定的标头,但是the loader I created只是简单地实现了函数的调用函数指针,将所有参数传递给它并返回其值(如果有)。指针是在源文件中定义的,因此不在头文件中。
使用您的示例:
//header
void test();
//source file
void (*testPointer)();
void test()
{
testPointer();
}
您甚至可以看中和make
test
load the pointer://source file
void (*testPointer)() == NULL;
void test()
{
if(!testPointer)
{
testPointer = SomethingThatReturnsAFunctionPointer();
}
testPointer();
}