русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Описатели с модификаторами

Модификатор – специальное ключевое слово, предназначенное для изменения смысла объявления. Появление модификатора в объявлении является сигналом для компилятора интерпретировать данное объявление некоторым специальным образом. Ранее были рассмотрены модификаторы: auto, extern, register, static, long, short, signed, unsigned, near, far, huge. Рассмотрим дополнительные модификаторы: const, volatile, cdecl, pascal, interrupt. Модификаторы cdecl, pascal, interrupt применимы к функциям и модифицируют смысл их идентификаторов, поэтому должны записываться непосредственно перед идентификаторами. Модификаторы const, volatile, near, far, huge применимы к указателям (первые два применимы и к переменным и массивам, а near и far – к функциям) и воздействуют либо на идентификатор, либо на знак указателя, которому этот модификатор предшествует, и в первом случае он модифицирует объект, именованный идентификатором, а во втором – объект, на который указывает указатель. Модификаторы const и volatile могут записываться и перед спецификацией типа. Допустимо использование в объявлении более одного модификатора.

Пример 3

int const *p1;

int *const p2;

Указатель p1 – указатель на константную переменную типа int (запрещается изменять значение переменной), указатель p2 – константный указатель на переменную типа int (запрещается изменять значение указателя).

Модификаторы const и volatile.

Модификатор const запрещает изменять значение объекта в течении всего времени выполнения программы. Компилятор проверяет все коды программы на попытки изменения объекта и при обнаружении таковых выдаёт сообщение об ошибке.

Модификатор volatile указывает на то, что значение объекта может быть в любой момент времени изменено, причём не только текущей программой, но и любой другой. Значение объекта с данным модификатором при его вхождении в выражения всегда будет читаться из ОЗУ.

Возможно одновременное использование обоих модификаторов. Это означает запрет модификации значений объекта самой программой и разрешение модификации объекта внешними программами.

При применении этих модификаторов к составным объектам их действие распространяется на все компоненты этого объекта.

Модификаторы cdecl и pascal.

При компоновке проекта компоновщик производит сборку объектных модулей проекта (.obj) в единую исполнимую программу (.exe). Объектные модули содержат в себе машинный код, который может быть написан на любом языке программирования высокого уровня (наиболее распространённые языки – C и Pascal), и в принципе сам машинный код зависит от системы команд ЭВМ, а не от языка высокого уровня, на котором написана исходная программа. Однако в деталях существуют отличия:

1. Компиляторы языка C добавляют первым символом для всех идентификаторов глобальных объектов символ подчёркивания, то есть их имена в объектном и исходном модулях будут различны. Компиляторы языка Pascal задают идентификаторы глобальных объектов большими буквами и никаких символов к ним не добавляют.

2. Компиляторы языка C при вызовах функций их параметры заносят в стек, начиная с последнего. Компиляторы языка Pascal при вызовах функций их параметры заносят в стек, начиная с первого.

В языке Pascal функция не может иметь переменное число параметров.

Модификатор pascal вызывает следующие действия:

1. Модифицируемый идентификатор преобразуется к верхнему регистру и перед ним не вставляется символ подчёркивания.

2. Если идентификатор – имя функции, то при её вызовах запись в стек значений фактических параметров будет производиться, начиная с первого.

Действия модификатора cdecl приводят к тому, что объект всегда будет обрабатываться по правилам языка C. Он введён в связи с тем, что в компиляторах языка C есть режим, при котором все глобальные объекты обрабатываются по умолчанию по правилам языка Pascal.

Функция main() всегда должна быть описана по правилам языка C, поэтому необходимо использовать для неё модификатор cdecl, если предполагается компиляция программы в режиме языка Pascal.

Все стандартные библиотечные функции объявлены с модификатором cdecl.

Пример 4

int pascal func1(int, float);

int cdecl main (int argc, char *argv[])

Модификатор interrupt.

Предназначен для объявления функций, работающих с векторами прерываний. Для таких функций в точках их вызова и возврата компилятор по сравнению с обычными функциями генерирует дополнительный код – программное сохранение всех регистров процессора в точке вызова и восстановление всех регистров в точке возврата. Модификатор interrupt нельзя использовать вместе с модификаторами near и far.

Просмотров: 809


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.