我有一个由两个文件组成的模块:标头(module.h
)和实现(module.c
)。该模块的功能在另一个.c
文件中使用。
我希望一个模块有一个全局变量,它不会在每次调用该模块的函数时被重新初始化。所述变量将仅从模块内部进行修改。
给你一个更好的画面:
module.c
:
int glob_var;
int func(); //It modifies `glob_var`'s value
main.c
:
#include "module.h"
func();
我该怎么办?
所述变量将仅从模块中进行修改
由于该变量将仅在func()
中被修改/需要,因此不需要将其作为全局变量。在func()
中将其声明为static
。
int func(void)
{
static int var = 0;
/* Do stuff */
/* Modify 'var' */
}
一般来说,您应该尽可能避免全局变量。在您的情况下,您不需要它。请注意,当func()
被多次调用时,var
不会被重新初始化,因为它是static
变量。
您还可以对glob_var使用static修饰符。
模块.c:
static int glob_var;
int func(); //It modifies glob_var's value
main.c:
#include "module.h"
func()