13.02.2007, 23:32
общий
это ответ
Здравствуйте, Demidov Roman Igorevich /rid!
в С++ каждый cpp файл компилируется отдельно, поэтому если в каждом ты укажешь, например:
int a;
то каждый obj файл будет содержать свою собственную переменную с именем а (т.е. все функции внутри своего obj/cpp файла будут использовать свою переменную). на этапе линковки линкер выдаст предупреждение, что имеются две переменные с одинаковым именем.
чтобы сделать одну "глобальную" переменную, видимую всем cpp файлам, делают так - в одном единственном cpp файле ее объявляют физически, т.е.
int a;
во всех остальных же пишут:
extern int a;
что означает, что эта переменная определена где-то еще, а уже линкер на этапе линковки найдет ее и подставит нужный адрес.
конструкцию
extern int a;
удобно поместить в h файл, который подключается ко всем cpp.