I’ve created a new file, where I keep all of this years code. When I compile my project I get an error saying symbol ‘ReleasingBall’ has multiple definitions.
#include <timer.h>
#include "custom_routines.h"
// function definitions
user_routines.h
//..
#include "custom_routines.h"
// all of my custom code is commented out, so beside the above include directive, everything is in its original state
Why am I getting this error, the include guards should be preventing this problem!
I’d think that variable would need to be declared global and then marked extern in all other files that use it. Or something like that, I forget the exact procedure.
When you copy a project to a new folder, you should Clean (or Build all) to get rid of any leftover pointers to the old files. Until you do that, the linker appears to get confused, complaining about what looks like duplicate copies of the object files.
[Edit:]
Oh! You’re not supposed to declare variables in .h files. The bool ReleasingBall; line belongs in custom_routines.c instead, and what goes in custom_routines.h should be extern bool ReleasingBall; (though I’m not sure where bool is defined).
You want the compiler to encounter only one declaration for the variable as it processes the set of source source files. Your technique above is designed to prevent multiple references or forward references to be encountered , not multiple variables. I’m sure your custom_routines.h file is processed when you compile multiple separate source files.
So do his, change the statement in custom_routines.h to an external reference and declare storage for the variable in ONLY one source file.