Курсы программирования в Киеве - Extern

Ключевое слово "extern" используется в C и C++ для указания на то, что переменная или функция определены в другом месте либо находятся внутри динамически подключаемой библиотеки.

Если переменная объявлена как extern, то компилятор знает, что ее определение будет находиться где-то в другом месте в коде, и не будет создавать новую переменную с таким же именем. То есть, мы можем объявить переменную в одном файле, а определить её в другом файле и использовать в обоих местах. Например:

file1.c:

c
extern int x;
int foo(void) {
  return x;
}

file2.c:

c
int x = 10;

main.c:

c
#include 
int foo();
int main(void) {
    printf("%d\n", foo()); // выведется 10
    return 0;
}

Здесь мы объявляем переменную x как extern в file1.c, чтобы компилятор знал, что определение переменной будет в другом месте. А в file2.c мы определяем саму переменную x и присваиваем ей значение 10. В main.c мы подключаем функцию foo и выводим её значение в stdout.

Как для переменных, так и для функций ключевое слово extern может быть неявным, то есть компилятор будет считать, что все функции и переменные не определены в данном файле являются extern. Например:

file1.c:

c
int x;
int foo(void) {
  return x;
}

file2.c:

c
extern int x;
int y;
int bar(int z) {
  return x + y + z;
}

main.c:

c
#include 
int foo();
int bar(int);
int main(void) {
    x = 10;
    int y = 20;
    printf("%d\n", foo()); // выведется 10
    printf("%d\n", bar(30)); // выведется 60
    return 0;
}

Здесь переменная x, объявленная в file1.c, считается неявно extern, а функция и переменная, объявленные в file2.c, явно объявляются как extern. В main.c мы присваиваем значение 10 переменной x, объявленной в file1.c, и объявляем новую переменную y со значением 20. В функции bar мы складываем значения x, y и z и возвращаем их. Выводим значения foo и bar в stdout.

Все переменные и функции, объявленные в другом файле как extern, должны иметь одинаковый тип и имя. Если тип или имя будет отличаться, компилятор может выдать ошибку.

Также стоит отметить, что в C++ ключевое слово extern может использоваться для объявления переменных и функций шаблонных классов, подключаемых из других файлов. В таком случае синтаксис будет выглядеть следующим образом:

c++
extern template class MyClass; // MyClass определен в другом файле

Похожие вопросы на: "extern "

Pull Git: Learn Everything You Need to Know About Version Control System
Яндекс Карты API: полное руководство
Или JS – какой язык программирования выбрать?
Рекурсия: что это и как использовать на примерах
Сортировка словаря по ключу в Python
DF Drop: инвестирование в фондовый рынок с лучшими профессионалами
<h1>Convert PNG to SVG - Easy and Fast Online Converter
Java шаблоны проектирования
Управление заголовками запросов с помощью Axios
Как расположить блок по центру в CSS