Собственно, возник следюущий вопрос: есть два файла *.c — main.c и notmain.c, а также заголовочный header.h.
notmain.c:
int var;
void initVar() { var = 5; }
main.c:
#include <stdio.h>
#include "header.h"
int main()
{
	initVar();
	var++;
	printf("var: %d\n", var1);
}
При этом выводится ответ 6 независимо от того, каким образом переменная var объявляется в header.h:
header.h:
int var; /* или extern int var */
void initVar();
единственное различие заметно при вызове nm для main.o:
для случая extern int var:
nm main.o
         U initVar
00000000 T main
         U printf
         U var
для объявления int var без extern:
 nm main.o
         U initVars
00000000 T main
         U printf
00000004 C var
Есть ли подвох?



