我现在的写法
//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不久,有点晕
还真是,但是func_a和func_b必须是static的,那还能用全局变量吗?
追答func_a和func_b
里可以使用全局变量