Интерпретация описателей с модификаторами
Интерпретация описателей с модификаторами
Модификаторы cdecl, pascal, interrupt воздействуют на идентификатор и должны быть записаны непосредственно перед ним.
Модификаторы const, volatile, near, far, huge воздействуют либо на идентификатор, либо на звездочку, расположенную непосредственно справа от модификатора. Если справа расположен идентификатор, то модифицируется тип объекта, именуемого этим идентификатором. Если же справа расположена звездочка, то модифицируется тип объекта, на который указывает эта звездочка, т.е. эта звездочка представляет собой указатель на модифицированный тип. Таким образом, конструкция <модификатор>* читается как "указатель на модифицированный тип". Например,
int const *р; - это указатель на const int, а
int * const р; - это const указатель на int. Модификаторы const и volatile могут также записываться и перед спецификацией типа.
В СП ТС использование модификаторов near, far, huge ограничено: они могут быть записаны только перед идентификатором функции или перед признаком указателя (звездочкой).
Допускается более одного модификатора для одного объекта (или элемента описателя). В следующем примере тип функции func модифицируется одновременно специальными ключевыми словами far и pascal. Порядок специальных ключевых слов не важен, т. е. комбинации far pascal и pascal far имеют один и тот же смысл.
int far * pascal far func();
Тип значения, возвращаемого функцией func, представляет собой указатель на значения типа int. Тип этих значений модифицирован специальным ключевым словом far.
Как обычно, в объявлении могут быть использованы круглые скобки для изменения порядка его интерпретации.
Пример:
char far *(far *getint)(int far *);
7 6 2 1 3 5 4
В примере показано объявление с различными вариантами расположения модификатора far. Учитывая правило, согласно которому модификатор воздействует на элемент описателя, расположенный справа от него, можно проинтерпретировать это объявление следующим образом (шаги интерпретации пронумерованы):
1. Идентификатор getint объявляется как
2. Указатель на far
3. Функцию, требующую
4. Один аргумент, который является указателем на far
5. Значение типа int
6. И возвращающую указатель на far
7. Значение типа char
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
ГЛАВА 7. ИНТЕРПРЕТАЦИЯ СММ
ГЛАВА 7. ИНТЕРПРЕТАЦИЯ СММ 7.1. Интерпретация ключевых практик Цель применения ключевых практик не заключается в поддержке какой-либо определенной модели жизненного цикла разработки ПО, организационной структуры, разделения сфер ответственности, либо
7.1. Интерпретация ключевых практик
7.1. Интерпретация ключевых практик Цель применения ключевых практик не заключается в поддержке какой-либо определенной модели жизненного цикла разработки ПО, организационной структуры, разделения сфер ответственности, либо управленческого/технического подхода к
7.2. Интерпретация разделов
7.2. Интерпретация разделов В рамках любого раздела ключевых практик для обеспечения преемственности и согласованности используются определенные фразы и условные термины.Основные структурные термины описаны ниже и сгруппированы по
7.3. Интерпретация определения производственного процесса
7.3. Интерпретация определения производственного процесса Определение производственного процесса является основой для достижения более высоких уровней зрелости. В данном разделе рассматриваются те аспекты определения производственного процесса, которые полезны при
R.8.2 Смысл описателей
R.8.2 Смысл описателей Список описателей следует после (возможно пустого) списка спецификаций-описания (§R.7.1). Каждый описатель содержит в точности одно имя-из-описателя, которое задает описываемый идентификатор. Если не считать описаний некоторых специальных функций
Синтаксис описателей
Синтаксис описателей Синтаксис описателей рекурсивными правилами:<идентификатор><описатель> []<описатель> [<константное-выражение>]*<описатель><описатель>()<описатель>(<список типов аргументов>)(<описатель>)Описатели в языке Си позволяют
Интерпретация составных описателей
Интерпретация составных описателей Составной описатель — это идентификатор, дополненный более чем одним признаком типа массив, указатель или функция.С одним идентификатором можно образовать множество различных комбинаций признаков типа массив, указатель или функция.
Описатели с модификаторами
Описатели с модификаторами В разделе 1.4 "Ключевые слова" приведен перечень специальных ключевых слов, реализованных в СП MSC и СП ТС. Использование специальных ключевых слов (называемых в дальнейшем модификаторами) в составе описателей позволяет придавать объявлениям
8.4 Смысл описателей
8.4 Смысл описателей Каждый описатель считается утверждением того, что если в выражении возникает конструкция, имеющаяя ту же форму, что и описатель, то она дает объект указанного типа и класса памти. Каждый описатель содержит ровно одно оп_имя; оно опредляет описываемый
Amazon S3, паролемания и современная интерпретация метафоры Неуловимого Джо Сергей Голубицкий
Amazon S3, паролемания и современная интерпретация метафоры Неуловимого Джо Сергей Голубицкий Опубликовано 01 апреля 2013 Amazon S3 (Simple Storage Service) был запущен в 2006 году и с тех пор прочно закрепился в категории де-факто стандарта облачных услуг для
Интерпретация карты рождения
Интерпретация карты рождения Некоторые астрологи шутят, что для того чтобы добиться профессионализма в своем деле, достаточно рассчитать одну-единственную натальную карту, а потом всю жизнь ее интерпретировать. Безусловно, в каждой шутке есть доля правды.