extern
Спецификатор extern выступает в C++ в нескольких качествах. Есть у него и такие черты, которые уже заменены лучшими альтернативами. Все они будут рассмотрены в этом разделе, так что вам станет понятна та роль, которую это ключевое слово играет в программах.
Будучи язчком строго типизированным, C++ требует, чтобы функции, переменные и другие элементы были объявлены до их появления в программе. Спецификатор extern играет большую роль в объявлениях, и вы можете встретить его в массе уже написанных программ. Поскольку C++ часто применяется в качестве инструментального языка для других программных продуктов, таких как динамически подключаемые библиотеки (DLL), эле-менты управления Visual Basic (VBX) или элементы управления OLE (OCX), спецификатор extern используется в качестве спецификатора компоновки. Эти его применения будут разобраны в следующих разделах.
*
Внешняя компоновка
C++ — относительно новый, но уже завоевавший лидирующее положение язык программирования. Многим компаниям придется в конечном счете переводить программы, написанные на обычном С, в объектно-ориентированные программы на C++. Частью этого процесса конверсии станет выяснение того, какие из старых средств и соглашений следует заменить и чем.
Ключевое слово extern использовалось в прошлом для разрешения внешних связей между переменными и функциями. Объявление, начинающееся с ключевого слова extern означает, что это объявление или определение существует где-то еще: в другом модуле или в этом же модуле, но позднее.
На листинге 9.1 приведен пример программы, содержащей ключевое слово extern, употребленное в объявлении переменных и функций.
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: }