我有一个包含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();
我该如何解决这个问题?
答案 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()