定义全局变量,将由多个.c文件使用

时间:2014-06-18 09:02:39

标签: c header-files extern

我需要定义几个变量(全局变量),这些变量将被许多.c文件使用。变量如String数组,文件指针,Int等。

情况:FileX.h

分别用-c选项编译的不同c文件(FileA,FileB,Filec,FileD)(所有人都包含了FileX.h)然后通过组合它们再次编译了一些文件。单独编译时不会弹出错误,但是当它们在组(FileA.o, FileB.o and FileC.o)中编译时,会弹出错误。有没有办法解决它。我想用extern解决这个问题,但似乎这也会弹出错误。

有什么建议吗?

我不想在每个.c文件中定义变量

我有String数组,所以我不想在每个文件中定义它们

1 个答案:

答案 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 */