c语言 如何声明定义一个在.h中和多个.c中都能使用的变量

我现在的写法
//head.h
static int flag = 0;
static inline void func(){... flag = 1; ...}

//a.c
#include "head.h"
static void func_a(){
printf("%d", flag);
func();

}

//b.c
#include "head.h"
static void func_b(){
printf("%d", flag);
}

先运行的a.c,发现两次打印都是0,flag并不是全局的,于是改成
//head.h
extern static int flag;
static void func();

//a.c
#include "head.h"
static int flag = 0;

static void func(){... flag = 1; ...}
static void func_a(){
printf("%d", flag);
func();

}

//b.c
#include "head.h"
static void func_b(){
printf("%d", flag);
}

编译能过,但是运行起来有问题,是在a.c调用func的地方,func比较复杂,但是我没改动,在前一种不是全局的情况是可以使用的,不知道是func的问题还是其他哪没写对,接触c不久,有点晕

static是声明外部变量只限于本文件引用,是本文件的全局变量。

要想文件之间通用定义外部变量 extern int 。。追问

还真是,但是func_a和func_b必须是static的,那还能用全局变量吗?

追答

func_a和func_b

里可以使用全局变量

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答