Доступ к функциям в многомодульной программе
При вызове функции из другого модуля нужно объявить ее как extern и далее описать прототип. В этом случае функция становится видна в другом модуле. Если объявление глобально, то ее можно вызывать в любой функции данного модуля. Если объявление локально, то она доступна только в той функции, где сделано объявление.
Файл 1 Файл 2
Таблица 1. Классы памяти и инициализация
Класс Хранения | Внешний Extern | Внешний Статический static | Аргумен. Функции | Автоматические auto | Регистровые Register | Внурен. Статические Static |
Область действия | Программа | Модуль | Функция | Блок | Блок | Блок |
Время Жизни | Программа | Программа | Функция | Блок | Блок | Программа |
Область Хранения | Сегмент Данных | Сегмент данных | Сегмент стека | Сегмент стека | Регистры МП | Сегмент данных |
Инициал-емость объектов | Все | Все | Не раз-решена в Си | Все в С++ | Все | Все |
Момент инициализации | На стадии Компил. | На стадии компил. | При входе в блок | При входе в блок | При входе в блок | На стадии компил. |
Инициализация по умолчан. | Инициализируются 0 | Инициализируются 0 | Значение указывается | Значение не опред. | Значение не опред. | Инициализируется 0 |