我想复制一个函数,这样静态变量是独立的
我试着跟随,但问题是我只是在保存函数的“地址”
#include <stdio.h>
void Function() {
static int counter = 0;
counter++;
printf("Counter = %d\n", counter);
}
int main() {
void (*f1)() = Function;
void (*f2)() = Function;
f1(); // Should output 1
f2(); // Should output 1 (but the output is 2...)
return 0;
}
这在C语言中可能吗?
1条答案
按热度按时间gdrx4gfi1#
简短回答:不。冗长的回答:函数只是内存中的一些代码,有一个特定的地址指向它。你似乎已经知道了,因为你的:
在这里将
Function
的地址分配给f1
。所以基本上当你打电话
你给
f1
和f2
分配了相同的函数指针,也就是相同的内存地址。此地址是为void Function() {...}
自动创建的,并且在同一次执行中始终相同。如果你想有相同的函数两次,你要么需要写两次,要么把它写成一个宏,然后像这样创建两次:
但是我一般不推荐这样的宏,因为它们真的很难调试。玩得开心:)