综合技术
直播中

陈玲

7年用户 204经验值
私信 关注
[问答]

为什么这种情况必须加static?

请教大家一个问题:我在一个.h文件里定义了一个共同体:
static union
{
float Float;
u8 U8[4];
}Float_U8;
然后在其他.c文件里调用,为什么这里的static 必须加,如果不加就会报错,只要是包含了这个.h的c文件都会报重复定义的错误。

回帖(4)

张虎豹

2019-10-15 09:05:40
你应该去了解一下static存储类型的作用域,作用域在单个编译单元。
举报

吴樵

2019-10-15 09:14:57
加了static,变量的作用域为当前.C文件,相当于在每个.C文件中各定义了一个变量,互不影响。
如果想在.h文件中定义变量可以用条件编译
#ifdefine __main_c
#define GLOBA
#else
#define GLOBA extern
#endif
GLOBA int a;
这样在main.c的文件开头加一句宏定义
#define __main_c
这样a在main.c中为定义int a;
在别的文件中就为外部声明extern int a;
举报

李雪萧

2019-10-15 09:26:11
你要知道.h中的内容相当于直接替换到了你写include "xx.h"的地方
举报

刘华湘

2019-10-15 10:05:06
static定义的变量仅仅在定义的C文件有效,外部的文件不可访问
举报

更多回帖

发帖
×
20
完善资料,
赚取积分