[an error occurred while processing this directive]
|
Тут уж не затухание будет, а выход из строя.
Так я не понял, вопрос у Вас серьезный был? Я его за шуточный принял, мыслеформа вчерашняя подвела. Извините.
Вот насколько знаю, объявление переменных на внешнем уровне, т.е. не в теле ф-ии, со спецификатором static является и его определением, даже без инициализации. То есть под него выделяется память. static int mmm[1000] - определение.
Если static'а нет.
В одном файле есть int mmm[1000] и в другом то же самое.
Одно из них будет определением. Второй объявлением, ссылкой на первое.
Даже в отсутствии у второго спецификатора extern.
И вроде бы даже так - если в одном имеется int mmm[1000], в другом char mmm[1000], то память будет выделена под int, если размер int больше char. Т.е. определением будет int mmm[1000]. char mmm[1000] по сути будет ссылкой на область памяти, выделенную под int.
А чтобы не запутаться - проще, по-моему, использовать спецификатор extern.
В одном файле int mmm[1000], и это будет определением, в другом extern int mmm[1000], и это будет объявлением, ссылкой на первое.
Или, если нужны именно разные массивы, располагающиеся в разных местах памяти, использовать спецификатор static.
В общем у меня такие вот сведения. И еще, вроде все описанное точно и не определено, но могу спутать. Вроде зависит от компилятора разбор таких полетов.
Например в техасовском CCS, в ответ на int mmm[1000] в одном и аналогично в другом, получите ругань линкера. Оно и к лучшему, путаницы меньше будет.
E-mail: info@telesys.ru