模块的全局变量

时间:2015-12-24 10:16:24

标签: c global-variables

我有一个包含2个文件的模块:标题(module.h)和实现(module.c)。该模块的功能用于另一个.c文件。

我希望模块有一个全局变量,每次调用此模块的函数时都不会重新初始化。所述变量仅从模块内修改。

为了给你一个更好的画面:

module.c

int glob_var;
int func(); //It modifies `glob_var`'s value

main.c

#include "module.h"
func();

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

  

我将仅在模块

中修改所述变量

由于变量仅在func()中被修改/需要,因此您不需要将其作为全局变量。在static中将其声明为func()

int func(void)
{
   static int var = 0;
   /* Do stuff */

   /* Modify 'var' */
}

通常,您应该尽可能避免使用全局变量。在您的情况下,您不需要它。请注意,多次调用var时,func()不会重新初始化,因为它是static变量。

答案 1 :(得分:1)

您还可以对glob_var使用static修饰符。

答案 2 :(得分:0)

的module.c:

static int glob_var;
int func(); //It modifies glob_var's value

main.c中:

#include "module.h"
func()