gpt4 book ai didi

c - 如何将函数分配给函数指针

转载 作者:行者123 更新时间:2023-11-30 14:56:42 24 4
gpt4 key购买 nike

我希望能够做这样的事情:

void test();
void (*testPointer)() = SomethingThatReturnsAFunctionPointer();
test = testPointer;

我想做一些功能类似于 openGL header 实现方式的东西,其中声明函数原型(prototype),然后将函数设置为指针。换句话说,我想知道一些openGL头文件如何能够加载openGL函数,并同时具有函数原型(prototype)。

最佳答案

函数不是变量;它们不能被分配给。

但是,函数可以隐式转换为指向这些函数的指针。函数本身仍然不是变量,但您可以将该函数指针分配给适合该函数指针类型的变量。

I would like to know how some openGL header files are able to both load the openGL functions, and have prototypes of the functions at the same time.

我不知道你在谈论哪个特定 header ,但是 the loader I created只需让函数的实现调用函数指针,向其传递所有参数并返回其值(如果有)。该指针是在源文件内定义的,因此它不在 header 本身中。

使用您的示例:

//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();
}

关于c - 如何将函数分配给函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44468609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com