It's incredible. Over 30 years I've been programming and I seem to have forgotten how to handle global variables. (It's because I never really use them I guess.) In the header file I have -

```
// any.h
bool neat;

```

and in the cpp -

```
// any.cpp
#include <any.h>
bool neat = false;

```

it told me I was redefining. So I took out the 'bool' - 

```
// any.cpp
#include <any.h>
neat = false;

```

Now it tells me "**error: ‘neat’ does not name a type**"
How can it not know 'neat' is a bool? It's the same translation unit 
so I don't need an **extern**. I haven't declared anything **static** 
so I know there is no limitation to file scope. This is supposed to be 
a global variable.

My understanding of the difference between declaring and defining is 
that with 'declaring' you are just informing the compiler a name is 
of a certain type. Whereas with 'defining' the compiler actually sets 
aside some space in the executable for the name to exist. 

What am I doing wrong?