![]() |
Linker Error
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_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. |
Re: Linker Error
Quote:
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. |
Re: Linker Error
Ah, right, i forgot about using extern when its in a different file. So the extern modifier tells the compiler to ignore multiple declarations?
|
Re: Linker Error
No, extern tells the compiler that it is declared in another file, your just using it.
char foo = 0; ... extern char foo; |
Re: Linker Error
This sounds exactly like a problem I had.
It happened to me when I was trying to define variables in the .h files You can either use extern, or just put them in the .c files (thats what I ended up doing) |
| All times are GMT -5. The time now is 02:52. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi