I just had the error
src/main.c:46: multiple definition of '_led' again. I figured the
extern keyword is coming for my rescue.
*.h files I wrote
const Led led; to "announce" that the according C file provides this variable. But if multiple places
this header file this clashes.
Of course one can surround the entire header file with
#ifndef MAKE_UP_A_NAME, but to me this feels like a symptom for hiding something we can do better.
So I discovered
extern. And by doing so I also learned why
const Led led;
is just not a good idea.
int var; -> declaration and definition extern int var; -> declaration
extern int var; just announces that
var will be defined at some point in time. In comparison
int var; does define
var already, which is not what we want, because if that happens twice the compiler complains. Why? Because all code, from all files can be imagined as getting thrown into one bit file and then there should be no duplicates definitions of anything.