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