you can't have an external reference to a variable in the same file that defines it.
Who says?
Code:
itsme@itsme:~/C$ cat extern1.c
#include <stdio.h>
#include "myextern.h"
int main(void)
{
printf("a in main is %d\n", a);
foo();
return 0;
}
Code:
itsme@itsme:~/C$ cat extern2.c
#include <stdio.h>
#include "myextern.h"
int a = 5;
void foo(void)
{
printf("%d\n", a);
}
Code:
itsme@itsme:~/C$ cat myextern.h
extern void foo(void);
extern int a;
itsme@itsme:~/C$ gcc -Wall extern1.c extern2.c -o extern
itsme@itsme:~/C$ ./extern
a in main is 5
5