我在一个文件中获得了一个函数,用于单个函数调用。但是,因为它依赖于这个文件中的很多静态声明(我没有创建这个文件,而且它很大程度上需要修改)。它不适用于多个函数调用。为一个函数强制一个新的地址空间(使静态变量非静态)
有没有办法使每个函数调用不知道以前的调用或当前调用? 实际上为每个函数调用强制一个新的地址空间。
像
//file inner.c
#include <stdio.h>
static int counter =1;
int incIt(int a){
counter += a;
return counter;
};
和主文件
//file outer.c
#include <stdio.h>
#include "inner.h"
int main(){
fprintf(stderr,"first: %d\n",incIt(5));
fprintf(stderr,"second: %d\n",incIt(7)); //this should be independent of previous calls.
return 0;
}
编译像
gcc -c inner.c
gcc outer.c
感谢
你预计第二次电话会返回什么? – Arkadiy 2010-07-21 16:54:49
不要使用静态变量? – Stephen 2010-07-21 16:59:13
在你的例子中,问题不在于使用静态变量,而在于使用全局变量(文件范围)。 – schot 2010-07-21 17:28:17