每次调用 C 源文件中的函数时,是否可以创建一个"new"全局变量?



测试在32位Linux x86上,我使用gcc 4.6.3

我有两个C源文件,分别是main.cfoo.c。它们看起来像这样(我简化了这个问题):

c

extern void foo(void);
void main()
{
    foo();
    foo();
}

foo.c

static int g = 0;
int g1 = 0;
void foo()
{
  printf("%dn", g);
  g = 123;
  printf("%dn", g);
  printf("%dn", g1);
  g1 = 123;
  printf("%dn", g1);
}

结果是:

0
123
0
123
123
123
123
123

我的问题是:

是否有任何方法,每次我在foo.c调用函数,一个新的全局变量将被初始化?正确的输出应该是:

0
123
0
123
0
123
0
123

我不熟悉C,然而,我被要求制作一个源代码翻译工具到C代码,有人设计了如何实现这个工具,把这个奇怪的问题留给了我。

谁能给我一些帮助?

重新初始化foo开头的变量:

void foo()
{
  g = 0;
  g1 = 0;
  printf("%dn", g);
  g = 123;
  printf("%dn", g);
  printf("%dn", g1);
  g1 = 123;
  printf("%dn", g1);
}

这样,每次调用foo时,gg1被设置为0(然后foo将它们设置为其他值)。

在函数调用之间重新初始化

void main()
{
    foo();
    g = 0;
    g1 = 0;
    foo();
}

注意应该是int main(void)

相关内容

  • 没有找到相关文章

最新更新