c-A模块'的全局变量



我有一个由两个文件组成的模块:标头(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()

相关内容

  • 没有找到相关文章

最新更新