я знал (я так думаю) разницу между объявлением переменной и определением. я просто хотел знать, где (в каком объекте) будет определена переменная, которая была объявлена с внешней связью (в файле заголовка) и включила этот файл заголовка во многие исходные файлы, где использовалась переменная. я упомянул несколько ссылки на объявления и определения не могут найти информацию об этом.
//globalheader.h//
extern int test_var;
//file1.c//
#include "globalheader.h"
static fn1();
fn1
{
int a;
a = test_var;
}
//file2.c//
#include "globalheader.h"
static fn2();
fn2
{
int b = 1;
test_var = b;
}
В приведенном выше фрагменте кода test_var объявлен с внешней ссылкой в файле globalheader.h, который был включен как в файл1.c, так и в файл2.c. Нет, где эта test_var была определена, но использовалась, так где (в каком объектном файле) эта test_var будет выделена память?