Ключевое слово extern
Ключевое слово extern применяется для объявления переменных и функций,
которые определены в другом файле или в другой области видимости.
Оно сообщает компилятору, что память для переменной уже выделена где-то
в другом месте, и не нужно создавать её заново. Чаще всего extern
используется для организации связи между несколькими файлами исходного кода
одной программы.
Также extern применяется для указания линковки с кодом,
написанном на языке C. Это позволяет использовать функции из
библиотек, собранных компилятором C, внутри программы на C++.
Синтаксис
// Объявление внешней переменной
extern тип имя_переменной;
// Объявление внешней функции
extern тип имя_функции(параметры);
// Указание линковки с C
extern "C" тип имя_функции(параметры);
Пример
Рассмотрим простейший пример использования extern для объявления
переменной, определённой ниже в этом же файле:
#include <iostream>
using namespace std;
extern int num;
int main()
{
cout << num << endl;
return 0;
}
int num = 42;
Результат выполнения кода:
42
Пример
Давайте объявим внешнюю функцию и вызовем её до её фактического определения:
#include <iostream>
using namespace std;
extern void greet();
int main()
{
greet();
return 0;
}
void greet()
{
cout << "abcde" << endl;
}
Результат выполнения кода:
"abcde"
Пример
Использование extern "C" для линковки с функцией,
написанной на языке C:
#include <iostream>
using namespace std;
extern "C" int c_func(int x);
int main()
{
cout << c_func(5) << endl;
return 0;
}
Результат выполнения кода (при наличии соответствующей C-функции):
10