Рассмотрим:
int a;
Это определение, а также декларация.
Рассмотрим следующий пример ...
int i;
printf("%d", i);
Будет напечатано некоторое количество ненужного. Что, очевидно, означает, что у него есть место в памяти.
Если вы хотите просто объявить переменную, а не определить ее, перейдите к ключевому слову "extern".
Таким образом, extern int b;
является просто декларацией, а не определением.
Пример:
extern int var;
int main(void)
{
var = 10;
return 0;
}
Таким образом, вышеприведенная программа выдаст ошибку, поскольку «var» нигде не определен.