Multiple definition error but "load once"-#ifndef should catch it...
How is this possible with the #ifndef catch?

How is this possible with the #ifndef catch?

If you have multiple compilations units (i.e. multiple *.c files), this gets included from each of them (only once). When the linker tries to resolve everything at the end, it sees multiple definitions of ledState.
Solution: don't put variables definitions in header files. Put them in source files. If you need them in multiple source files, additional put an "extern" declaration in the header.
In a header file:
extern bool ledState;
In one source file:
bool ledState = false;Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.