C/C++ Ключевое слово extern
Ключевое слово extern применяют для того, чтобы совместно использовать одну и ту же переменную в разных модулях кода на языке C/C++. С помощью extern переменные становятся глобальными.
Использование extern уместно только в тех случаях, когда построенная Вами программа состоит из нескольких исходных файлов, соединяемых вместе на этапе линковки, где некоторые переменные определены, например, в исходном файле file1.c, и к ним нужно обращаться в других исходных файлах, таких как file2.c.
Важно понимать разницу между терминами “определение переменной” (defining a variable) и “декларирование переменной” (иногда говорят “объявление переменной”, declaring a variable). Причем можно определять и декларировать не только переменные, но и константы. Вот смысл этих понятий:
Переменная (или константа) определена в том месте программы, где компилятор выделяет под неё память. Переменная (или константа) декларируется, когда компилятор информируется о том, что эта переменная где-то уже определена.
В декларации обязательно указывается тип переменной, чтобы компилятор знал, какой код нужно генерировать при обращении к переменной. В месте декларации не выделяется место в памяти для размещения переменной. Вы можете декларировать переменную в модуле кода несколько раз (хотя достаточно только одной декларации); но определить переменную в области её видимости можно только один раз.
Как лучше всего декларировать и определять переменные
Часто бывает удобно создать 2 отдельных файла с расширениями .c/.cpp и .h и в них определять глобальные переменные и их использование
Например:
В file.c/.cpp определить int Value=0;
в file.h декларировать extern int Value;
В результате при подключении file.h переменная Value будет видна.
Подобный метод удобен при работе с парсерами, когда некоторые данные должны передаваться из одного интерфейса на обработку и потом куда-то еще.
