Собственно, возник следюущий вопрос: есть два файла *.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
Есть ли подвох?