I came across the following problem while reading ...just cant get the logic behind this.
auto int c;
static int c;
register int c;
extern int c;
The first 3 statements actually allocate a place for the int.
The last one does not. All it does it tell the compiler is that somewhere in another compilation unit, an int called c will be defined.
If it is not defined, you'll get a linker error later on. Unsurprisingly enough, the linker will say that c is not defined.