Quote:
|
Originally Posted by maxlobovsky
I get the following error whenever i try to compile FRCcode with any variables declared in user_routines.h (in this case, "int bob;"):
MPLINK 3.40, Linker
Copyright (c) 2003 Microchip Technology Inc.
Error - symbol 'bob' has multiple definitions.
Errors : 1
I'm positive i don't have multiple definitions. It appears that user_routines.h is being included several times. i understand repeated #defines would be protected by the
Code:
#ifndef __user_program_h_
#define __user_program_h_
....
#endif
but how do i protect real code (not #define's) from being repeatedly inserted?
The program compiles fine with the variables in user_routines.c, i'd just prefer these global constants to be in the header for convenience.
|
The problem is that you are decalring bob in the header. It needs to be declared in the user_routines.c file and externed in the user_routines.h file.
So in user_routines.c it would look like:
int bob;
In user_routines.h it would be:
extern int bob;
What's happening is that each file that includes user_routines.h is creating a new copy of bob rather than just getting a reference to it.
Some compilers/linkers let you decare in the header file but in general it is not supported.