extern

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

Будучи язчком строго типизированным, C++ требует, чтобы функции, переменные и другие элементы были объявлены до их появления в программе. Спецификатор extern играет большую роль в объявлениях, и вы можете встретить его в массе уже написанных программ. Поскольку C++ часто применяется в качестве инструментального языка для других программных продуктов, таких как динамически подключаемые библиотеки (DLL), эле-менты управления Visual Basic (VBX) или элементы управления OLE (OCX), спецификатор extern используется в качестве спецификатора компоновки. Эти его применения будут разобраны в следующих разделах.

*

Внешняя компоновка

C++ — относительно новый, но уже завоевавший лидирующее положение язык программирования. Многим компаниям придется в конечном счете переводить программы, написанные на обычном С, в объектно-ориентированные программы на C++. Частью этого процесса конверсии станет выяснение того, какие из старых средств и соглашений следует заменить и чем.

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

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

h01951.jpg

1 // EXTERNS.CPP- Вызывает внешнюю функцию и записывает результат

2 //во внешнюю переменную

3 #include <iostream.h>

4 extern unsigned long factorial;

5 extern unsigned long Factorial(unsigned long) ;

6 void main()

1 {

в factorial = Factorial( 7);

9 cout « "7! (factorial):" « factorial « endl;

10: }