Хорошо, прочитав "немного старую" книгу ( "Язык программирования C", второе издание, Деннис Ритчи), я получил крест:
Внешняя переменная должна быть определена ровно один раз вне любой функции; это откладывает хранение для него. Переменная должна также быть объявлена в каждой функции, которая хочет получить к ней доступ.
и я подумал: что?!
"Эта переменная также должна быть объявлена в каждой функции, которая хочет получить к ней доступ". Затем я был потрясен еще раз:
int max;
/* ... */
int main()
{
extern int max;
/* ... */
}
И еще один - что?!
Насколько я знаю (очевидно, это не так много и далеко не достаточно), extern
имеет смысл только тогда, когда вы определяете глобальную переменную где-то, и вы хотите получить к ней доступ через другой файл (чтобы не определять его снова).
Итак:
- Какова точка этого
extern int max
внутриmain
или любой другой функции? - Действительно ли стандарт говорит, что это обязательно (что мне нужно объявить для этого примера этот максимум в каждой функции, который будет использовать его?)
- Это то же самое для С++ (почему я поместил тег С++)? Это первый раз, когда я вижу что-то вроде этого.
Примечание: это не то же самое, что В чем заключается использование объявления статической переменной как extern внутри функции?