我需要定义几个变量(全局变量),这些变量将被许多.c文件使用。变量如String数组,文件指针,Int等。
情况:FileX.h
分别用-c
选项编译的不同c文件(FileA,FileB,Filec,FileD)(所有人都包含了FileX.h)然后通过组合它们再次编译了一些文件。单独编译时不会弹出错误,但是当它们在组(FileA.o, FileB.o and FileC.o)
中编译时,会弹出错误。有没有办法解决它。我想用extern
解决这个问题,但似乎这也会弹出错误。
有什么建议吗?
我不想在每个.c文件中定义变量
我有String数组,所以我不想在每个文件中定义它们
答案 0 :(得分:1)
我假设你得到一个多重定义错误,因为你的标题看起来像是
global_variables.h
int global_a = 10;
int const global_b = 20;
您需要的是
global_variables.h
extern int global_a;
extern int const global_b;
global_variables.c
int global_a = 10;
int const global_b = 20;
编辑:进一步说明:
现在,您需要全局变量的所有其他文件中只需要:
other_file.c
#include "global_variables.h"
void some_func(void){
global_a = 5; /* ready to use */
}
other_awesome_file.c
#include "global_variables.h"
/* and now you can use all globals */