gpt4 book ai didi

c - 如何在函数指针中创建唯一的静态变量?

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:01 25 4
gpt4 key购买 nike

我正在尝试为每个函数指针创建一个唯一的静态变量,我需要使用函数指针,因为我计划在结构内部使用它们。

我尝试创建一个指向带有静态变量的函数的函数指针,但在它们中它是相同的变量。

#include <stdio.h>

void foo()
{
static int test = 10;
test++;
printf("%d\n", test);
}

void (*bar)() = foo;

int main()
{
foo();
bar();

return 0;
}

我预计这会给我 11 和 11,但我得到 11 和 12,所以它必须将同一个变量递增两次。

最佳答案

这不是函数指针能做的。

您可能需要某种面向对象而不是函数指针,这样您就可以拥有多个对象,每个对象都有自己的私有(private) test 字段,但共享相同的代码 .

为此,您需要使用 C++ 而不是纯 C。

(如果出于某种原因这对您不可用并且您必须用 C 来完成您的工作,则没有真正的方法可以为函数提供一个额外的上下文指针作为参数。或者,如果你只需要函数的有限多个实例,多写几次。它们可以共享一个辅助函数来完成真正的工作,但每个实例都需要声明自己的内存,以便辅助函数对其进行操作。

关于c - 如何在函数指针中创建唯一的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57342489/

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