13просмотров
29 июля 2024 г.
Score: 14
Ключевое слово extern
Данное ключевое слово применимо только к глобальным переменным. В чем заключается отличие extern int i от int i в глобальной области видимости и какую проблему оно решает?
Например у нас есть 2 файла main.cpp и base.cpp. В base.cpp у нас есть глобальная переменная a = 5. Мы хотим использовать эту переменную в main.cpp и как раз в этом случае нам на помощь приходит ключевое слово extern.
Отличие заключается в том, что int i делает объявление и определение.
extern int i смотрит по всем подключенным файлам и как бы делает указатель на переменную в другом файле, чтобы использовать значение переменной в данном translation unit. В сppreference написано, что объявления с внешней связью обычно доступны в заголовках, так что все единицы перевода, которые включают файл, могут ссылаться на тот же идентификатор, который определен в другом месте.
То есть когда мы используем extern дублируется только сигнатура функции, а сама реализация будет связана между 2 файлами линкером. #cpp