Доступ к функциям в многомодульной программе
При вызове функции из другого модуля нужно объявить ее как extern и далее описать прототип. В этом случае функция становится видна в другом модуле. Если объявление глобально, то ее можно вызывать в любой функции данного модуля. Если объявление локально, то она доступна только в той функции, где сделано объявление.
Файл 1 Файл 2
Таблица 1. Классы памяти и инициализация
Класс Хранения | Внешний Extern | Внешний Статический static | Аргумен. Функции | Автоматические auto | Регистровые Register | Внурен. Статические Static |
Область действия | Программа | Модуль | Функция | Блок | Блок | Блок |
Время Жизни | Программа | Программа | Функция | Блок | Блок | Программа |
Область Хранения | Сегмент Данных | Сегмент данных | Сегмент стека | Сегмент стека | Регистры МП | Сегмент данных |
Инициал-емость объектов | Все | Все | Не раз-решена в Си | Все в С++ | Все | Все |
Момент инициализации | На стадии Компил. | На стадии компил. | При входе в блок | При входе в блок | При входе в блок | На стадии компил. |
Инициализация по умолчан. | Инициализируются 0 | Инициализируются 0 | Значение указывается | Значение не опред. | Значение не опред. | Инициализируется 0 |
ПРЕПРОЦЕССОР ЯЗЫКА СИ
Компиляция выполняет еще один шаг перед собственно компиляцией исходного файла, называемый предварительно обработкой. Препроцессор просматривает программу и заменяет символьные аббревиатуры в программе на соответствующие директивы. Он расширяет возможности языка 3 функциями.
1. Подстановкой имен;
2. Включением файлов;
3. Условной компиляцией.
Это позволяет создавать мобильные, более удобочитаемые и более удобные для сопровождения программы.
# - первый символ в левой позиции, в любом месте исходного файла сообщает препроцессору, что далее следует директива. Она имеет действие до конца файла.
Подстановка имен
Директивы:
#define– создать макроопределение
#undef- удалить макроопределение
Директива #define служит для:
Дата добавления: 2018-11-25; просмотров: 427;