[an error occurred while processing this directive]
|
Хоть и просил не отсылать к стандартам, приведу выдержку и K&R:
Важно различать описание внешней переменной и ее опреде-
ление. описание указывает свойства переменной /ее тип, раз-
мер и т.д./; определение же вызывает еще и отведение памяти.
Если вне какой бы то ни было функции появляются строчки
INT SP;
DOUBLE VAL[MAXVAL];
то они определяют внешние переменные SP и VAL, вызывают от-
ведение памяти для них и служат в качестве описания для ос-
тальной части этого исходного файла. В то же время строчки
EXTERN INT SP;
EXTERN DOUBLE VAL[];
описывают в остальной части этого исходного файла переменную
SP как INT, а VAL как массив типа DOUBLE /размер которого
указан в другом месте/, но не создают переменных и не отво-
дят им места в памяти.
Во всех файлах, составляющих исходную программу, должно
содержаться только одно определение внешней переменной; дру-
гие файлы могут содержать описания EXTERN для доступа к ней.
/Описание EXTERN может иметься и в том файле, где находится
определение/. Любая инициализация внешней переменной прово-
дится только в определении. В определении должны указываться
размеры массивов, а в описании EXTERN этого можно не делать.
E-mail: info@telesys.ru