In many open source project, the header file contains lines such as:
extern int x;
extern char y;
And this .h file is included by another foo.c file, so x and y may be accessed in foo.c. These lines in .h, look like variable declarations, because extern variable definition conforms the forms:
extern int x=10;
int x = 10;
If 'extern int x' is declaration, then perhaps the definition should be somewhere else(in another file)? or 'extern int x;' is understood as an external definition?