2014-06-18 38 views
0

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

现状:FileX.h

不同的C文件(FILEA,FILEB,Filec日)与独立-c选项编译(FileX.h已包含所有)然后通过组合它们再次编译一些文件。当这些单独编译时没有弹出错误,但是当它们被编译在一组(FileA.o, FileB.o and FileC.o)中时,弹出错误。有什么办法可以解决它。我想用extern解决这个问题,但似乎这也会弹出错误。

有什么建议吗?

我不想在每个.c文件

定义变量我有String数组,所以我不想去界定每一个文件

+0

什么错误? – RedX

+0

'重复定义:在此文件A中定义的变量a。 ' – Merom

+0

最好的解决办法是在一个'.c'文件中定义所有变量,并在一个'.h'文件中将这些变量外部化。所以你可以通过包含'.h'文件在任何'.c'文件中访问这些变量。 –

回答

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_f ile.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 */ 
+0

你没有得到我的观点,我不想在每个文件中定义变量。 – Merom

+0

除此之外的其他建议? – Merom

+0

@Merom:在你的头文件中使用这个结构:#ifndef #define <相同的MACRO> ... <头文件内容> #endif' –