27.01.2007, 21:33
общий
это ответ
Здравствуйте, Azrr!
Ваш массив является глобальной статической переменной, и виден из любой функции, выше которой встречается его объявление.
Замечания по Вашему коду:
1) Описывайте в .h-файлах только те функции, которые Вы хотите сделать общедоступными, и только в виде заголовка, т.е.
int calc_sum();
2) Код этих функций следует писать в .cpp-файлах, и только 1 раз в проекте. Если Вы хотите использовать в .cpp-файле (файл номер 1) функцию, описанную в другом .cpp-файле (файл 2), подключите в файле 1 .h-файл, соответствующий файлу 2, так:
#include "файл_2.h", где файл_2 - имя файла файл_2.cpp
3) Описывайте глобальные переменные в .cpp, а не в .h файлах.
4) В тех .cpp-файлах, в которых вы хотите использовать переменную, описанную в другом файле, в начале пишите:
если переменная объявлена как "items MyItem[256];",
то там, где она нужна, пишите "extern items* MyItem;"
В п. 4 есть альтернатива: если переменная объявлена в Unit1.cpp (где она у Вас по логике и должна быть), тогда строчку с extern можно поместить в Unit1.h, а в Unit2.cpp написать:
#include "Unit1.h"
Пояснения: все переменные, описанные глобально (вне функций) в некотором .cpp - файле, являются статическими и глобальными для данного .cpp-файла.
Ключевое слово extern указывает, что данная переменная для файла является внешней, т.е. описана где-то ещё, а данный файл использует её как внешнюю.
Описания переменных и тела функций не следует лепить в .h-файлы, поскольку при подключении .h-файлов с помощью #include возникнет ошибка, поскольку переменные и функции с одинаковыми именами будут описаны несколько раз в проекте.