Mail Archives: djgpp/1998/10/22/12:16:47
Toni Rasanen wrote:
>
> I use a .h -file to define the variables (a really stupid vay,
> but...), with #ifdefs trying to make sure they won't be defined
> again. In .h, there is nothing but variables (and they aren't
> defined extern). I use those variables in various .c -files,
> as they are global. Then I have in all .c's that use those
> variables 'vars.h' included...
>
> eg.
> in 'main.c': #include "many_others.h"
> #include "gfx.h"
> #include "vars.h"
> in 'gfx.c': #include <some_others.h"
> #include "vars.h"
>
> However, when I try to compile this, compler tells me that some of
> (but not all!) the variables in vars.h are previously defined in some
> other .c -file...
This may not be a complete answer to your problems, but this is how I
handle global variable. I have one header in the global vars like this...
[file global.h]
#ifndef __GLOBAL_H_
#define __GLOBAL_H_
#ifndef EXTERN
#define EXTERN extern
#endif /* EXTERN */
EXTERN int var1;
EXTERN int var2;
<and so on...>
#endif /* __GLOBAL_H_ */
then in one c file (usaully the one with main I have this)
#define EXTERN
#include "global.h"
Some things to note. None of the global vars are pre initialized. This
is a requirement for this to work. Understand what is happening here.
The extern directive declares without defining. But in only one place,
they must be defined as well.
Hope that helps.
Alan
- Raw text -