R.7 Описания. Общеязыковая спецификация CLS R.7.1.1 Спецификации класса памяти

Спецификация

Спецификация - (позднелат. specificatio , от лат. species - род, вид, разновидность и facio - делают) может означать:

  1. определение и перечень специфических особенностей, уточнённая классификация чего-нибудь;
  2. инженерный термин, обозначающий набор требований и параметров, которым удовлетворяет некоторый технический объект (к примеру, мост через реку удовлетворяет таким параметрам, как максимальный общий вес нагрузки, максимальная нагрузка на ось, максимальная скорость ветра и т. д.)

Согласно определению, приведенному в Единой системе конструкторской документации (ЕСКД), спецификация - основной конструкторский документ, определяющий состав сборочной единицы , комплекса, комплекта. В спецификации содержится подробное перечисление узлов и деталей какого-либо изделия , конструкции, установки и т. п., входящих в состав сборочного или рабочего чертежа.

Согласно определению, приведённому в Политехническом словаре, спецификация - выполненный в форме таблицы документ, определяющий состав какого-либо изделия. Содержит обозначения составных частей, их наименования и количество.

Разновидности

Спецификация, дополненная ценами на позиции и дополнительными условиями (цена, упаковка, условия и сроки поставки, реквизиты сторон) может являться неотъемлемой частью договора поставки, либо выступать в роли коммерческого предложения. Такого рода спецификации формируются в качестве ответа на техническое задание (ТЗ) к договору поставки (изготовления) механизмов, оборудования и пр., либо по опросному листу. Спецификация может содержать набор технических (и иных) условий (ТУ), но этот набор как правило подтверждает технические требования по ТЗ. Сама по себе спецификация ТЗ не является, а только ответом на ТЗ по условиям поставки.

Спецификация к счёту - часть расчётного документа.

Техническая спецификация - спецификация технического устройства.

В информатике и компьютерной технике:

  • Спецификация формата файловой системы (UDF и пр.)
  • Спецификации языков программирования и описания (CLI и пр.)

SMILES - спецификация однозначного описания состава и структуры молекулы химического вещества.

Спецификация может содержать:

  • Описательное название, номер или другой идентификатор спецификации
  • Время последнего пересмотра и отметку, кем был выполнен пересмотр
  • Логотип или торговую марку, указывающую кому принадлежит право на копирование, владельца и происхождение документа
  • Содержание документа, если документ длинный
  • Ответственное лицо или организацию по вопросам по спецификации, по обновлениям и отклонениям
  • Важность, область применения спецификации и её назначение
  • Термины, определения и аббревиатуры для пояснения сути спецификации
  • Способы проверки для всех установленных требований и характеристик
  • Материальные требования: физические, механические, электрические, химические и другие. Целевые и допустимые
  • Требования по эксплуатационному тестированию. Целевые и допустимые
  • Изображения, фотографии или технические иллюстрации
  • Требования по мастерству
  • Требования к сертифицированности
  • Требования по технике безопасности
  • Экологические требования
  • Контроль по обеспечению качества, образец для проверки, проверка, критерий приёма работы
  • Лицо или организация ответственное за выполнение спецификации
  • Выполнение и доставка
  • Условия по отклонениям, перепроверке, пересмотре, корректировке измерений и характеристик
  • Ссылки и цитаты в тексте спецификации которые могут потребоваться для установки ясности документа
  • Подписи и разрешения, если они необходимы
  • Контроль изменений (с помощью специальных компьютерных программ) для последовательной разработки, проверки и выполнения, если документ предназначен для внутреннего использования
  • Приложения, которые раскрывают детали, добавляют ясности, или пояснения по оплате

См. также

Ссылки

Примечания


Wikimedia Foundation . 2010 .

Синонимы :
  • Петровское (Ярославская область)
  • Мануил II Палеолог

Смотреть что такое "Спецификация" в других словарях:

    СПЕЦИФИКАЦИЯ - выполненный в виде таблицы документ, определяющий сост ав какого либо изделия. Содержит обозначение составных частей, их наиме нование и количество (основной документ, используемый для комплектования изделий). Словарь финансовых терминов.… … Финансовый словарь

    СПЕЦИФИКАЦИЯ - 1) философский термин, означающий самоотличение. 2) переработка сырого материала или старых вещей в новый вид или новые формы, придающие им вид новых вещей. 3) именная или точная роспись; пересчитывание отдельностей, составляющих целое; реестр.… … Словарь иностранных слов русского языка

    спецификация - и, ж. spécification, > нем. Spezifikation. <лат. species вид, разновидность + facio делаю. 1. спец. Определение и перечень специфических особенностей чего л.; классификация. БАС 1. На валах здесь обретающиеся пушки, мортиры со всеми… … Исторический словарь галлицизмов русского языка

    спецификация - перечисление, стокнот, определение, классификация, документ, уточнение Словарь русских синонимов. спецификация сущ., кол во синонимов: 6 документ (82) … Словарь синонимов

    Спецификация - (форма № ТОРГ 10) применяется в том случае, когда отфактурованная партия товара упаковывается в ящики, бочки и т. п. Спецификация выписывается в двух экземплярах материально ответственным лицом склада (кладовой); один экземпляр прилагается к… … Энциклопедический словарь-справочник руководителя предприятия

    СПЕЦИФИКАЦИЯ - (лат. specificatio) 1) в гражданском праве то же, что и переработка как способ возникновения права собственности; 2) перечень предлагаемых или поставляемых товаров с указанием количества по каждому сорту, марке, артикулу и в необходимых случаях… … Юридический словарь

    Спецификация - перечень производимой или предлагаемой к продаже продукции, в котором указано ее количество, сорт, марка, качественные характеристики, цены. Словарь бизнес терминов. Академик.ру. 2001 … Словарь бизнес-терминов

    СПЕЦИФИКАЦИЯ - 1) перечисление подробностей, на которые необходимо обратить особое внимание.2) Один из основных документов технической конструкторской документации (на изделие, продукты и т. д.), выполняемый обычно в виде таблицы, в которой указываются название … Большой Энциклопедический словарь

    СПЕЦИФИКАЦИЯ - перечень предлагаемых к продаже или поставке товаров, в котором указаны их количество, сорт, марка, качественные характеристики, а в необходимых случаях и цены. Райзберг Б.А., Лозовский Л.Ш., Стародубцева Е.Б.. Современный экономический словарь.… … Экономический словарь

    СПЕЦИФИКАЦИЯ - СПЕЦИФИКАЦИЯ, спецификации, жен. 1. только ед. Действие по гл. специфицировать; разработка, перечисление подробностей, деталей (книжн.). 2. Документ с описанием изготовленного предмета (механизма, машины и т.д.), по которому определяют его… … Толковый словарь Ушакова

Книги

  • , Шенг Лиэнг. В этой книге описывается интерфейс JNI. Книга будет полезна тем, кто интересуется следующими вопросами: - интеграция кода, написанного на таких языках программирования, как С и C++, в… Купить за 1009 руб
  • Интерфейс JNI. Руководство по программированию и спецификация , Шенг Лиэнг. В книге описывается интерфейс Java Native Interface (JNI) - интерфейс взаимодействия языка Java с нативным кодом, написанным на других языках. Она будет полезна программистам на Java,…

Общеязыковая спецификация CLS

Как известно, в разных языках программирования одни и те же программные конструкции выражаются своим уникальным, специфическим для конкретного языка образом. Например, в C# конкатенация строк обозначается с помощью знака "плюс" (+), а в VB для этого обычно используется амперсанд (&). Даже в случае выражения в двух отличных языках одной и той же программной идиомы (например, функции, не возвращающей значения), очень высока вероятность того, что с виду синтаксис будет выглядеть очень по-разному.

Как уже показывалось, подобные небольшие вариации в синтаксисе для исполняющей среды.NET являются несущественными благодаря тому, что соответствующие компиляторы (в данном случае - csc.exe и vbc.exe) генерируют схожий набор CIL-инструкций. Однако языки могут еще отличаться и по общему уровню функциональных возможностей. Например, в каком-то из языков.NET может быть или не быть ключевого слова для представления данных без знака, а также поддерживаться или не поддерживаться типы указателей. Из-за всех таких вот возможных вариаций было бы просто замечательно иметь в распоряжении какие-то опорные требования, которым должны были бы отвечать все поддерживающие.NET языки.

CLS (Common Language Specification - общая спецификация для языков программирования) как раз и представляет собой набор правил, которые во всех подробностях описывают минимальный и полный комплект функциональных возможностей, которые должен обязательно поддерживать каждый отдельно взятый.NET-компилятор для того, чтобы генерировать такой программный код, который мог бы обслуживаться CLR и к которому в то же время могли бы единообразным образом получать доступ все языки, ориентированные на платформу.NET. Во многих отношениях CLS может считаться просто подмножеством всех функциональных возможностей, определенных в CTS.

В конечном итоге CLS является своего рода набором правил, которых должны придерживаться создатели компиляторов при желании, чтобы их продукты могли без проблем функционировать в мире.NET. Каждое из этих правил имеет простое название (например, "Правило CLS номер 6") и описывает, каким образом его действие касается тех, кто создает компиляторы, и тех, кто (каким-либо образом) будет взаимодействовать с ними. Самым главным в CLS является правило 1 , гласящее, что правила CLS касаются только тех частей типа, которые делаются доступными за пределами сборки, в которой они определены .

Из этого правила можно (и нужно) сделать вывод о том, что все остальные правила в CLS не распространяются на логику, применяемую для построения внутренних рабочих деталей типа.NET. Единственными аспектами типа, которые должны соответствовать CLS, являются сами определения членов (т.е. соглашения об именовании, параметры и возвращаемые типы). В рамках логики реализации члена может применяться любое количество и не согласованных с CLS приемов, поскольку для внешнего мира это не будет играть никакой роли.

Например, возьмем чувствительность к регистру. Язык IL чувствителен к регистру символов. Разработчики, которые пишут на языках, чувствительных к регистру, широко используют гибкость, которую обеспечивает эта зависимость от регистра, при выборе имен переменных. Однако язык Visual Basic 2010 не чувствителен к регистру символов. Спецификация CLS обходит эту проблему указывая, что любой CLS-совместимый код не должен включать никаких пар имен, отличающихся только регистром символов. Таким образом, код Visual Basic 2010 может работать с CLS-совместимым кодом.

Этот пример иллюстрирует, что CLS работает двумя способами.

кафедра 304

Лабораторная работа № 2

по предмету «Программирование»

Выполнила студентка 315 гр.

Старцева А.В.

Проверила доц. каф. 304

Бакуменко Н.С.

________________________

Тема: "Спецификация С ++"

Цель работы: Научиться писать описание основных характеристик программы или подпрограммы. Спецификация всегда включает в себя следующие характеристики: постановка задачи, которая решается данной программой или подпрограммой, описание исходных данных, описание результатов, описание особых ситуаций.

Условие:

9.59. Дано предложение. Определить число букв «о» в нем.

9.101.Дано слово. Поменять местами его третью и последнюю буквы.

9.155.В слове имеются только две одинаковые буквы. Найти их.

Выполнение:

Название: Vvod

Описание: Функция считывает из консоли символьное значение.

Исходные данные:

Название: 1)symbol; 2) S;

Описание: 1)переменная, которой присваивается определенное значение (некий символ); 2) заданное предложение или слово – параметр подпрограммы, передаётся из основной программы в виде набора символов.

Тип и диапазон: 1)Char, любые символы; 2) string, любые символы

Результат: функция считывает введенные пользователем с клавиатуры данные.

Исключительные описания :

Описание: 1)введены данные не соответствующего типа 2) введено больше данных, чем необходимо для программы

Обработка: 1), 2) - выведется сообщение о том, что при построении программы были обнаружены ошибки.

Название: Vuvod

Описание: Функция выводит из консоли целочисленное, символьное значение, строку.

Исходные данные:

Название: 1) n 2) s; 3) h.

Описание: n, s, h.- переменные, которым присваивается результат функции (заданной задачи). 1) Подпрограмма возвращает одно значение – число букв “о” в заданном предложении. 2) Подпрограмма возвращает массив типа char, у которого поменяны местами второй и последний элемент (слово, в котором поменяны местами третья и последняя буквы). 3) Подпрограмма возвращает одно значение – букву, которая повторяется в слове.

Тип и диапазон : 1) int; 2) string; 3) char.

Результат: функция выводит на экран результат работы программы, т.е выводит на экран переменные n, s, h.

Название: Func

Описание: Определяет число букв «о» в заданном предложении.

Исходные данные:

Название: 1) S; 2) simbol, 3) n

Описание: 1) Исходный массив(заданное предложение) – параметр подпрограммы, передаётся из основной программы в виде набора символов. 2) переменная, которой присваивается символ «о»

Тип и диапазон: 1) string, любые символы. 2) Char, символ о.

Результат:

Название: cout

Описание: Подпрограмма выводит на печать значение переменой n.

Тип и диапазон Int

Исключительные описания

Описание: предложение не содержит буквы о.

Обработка: выводится сообщение, что предложение не содержит букву о.

Название: Func1

Описание: функцияменяет местами третью и последнюю буквы заданного пользователем слова.

Исходные данные:

Название: 1) S; 2) l, k 3) temp; 4) s

Описание: 1) Исходный массив(заданное слово) – параметр подпрограммы, передаётся из основной программы в виде набора символов. 2) переменная которой присваивается значение второго элемента массива. 2)переменные, которым присваиваются индексы третьей и последней буквы заданного слова. 3)переменная, которой сначала присваивается значение второго элемента массива, затем во время работы программы происходит переприсваевание.

Тип и диапазон: 1) string, любые символы; 2) int 3) int.

Результат:

Название: cout

Описание: Подпрограмма выводит на печать значение переменой s

Тип и диапазон: string.

Исключительные описания

Описание: 1) не корректное задание массива, 2) индексы заданны не соответствующего типа.

Обработка: 1),2) - выведется сообщение о том, что при построении программы были обнаружены ошибки.

Название: Func2

Описание: функция находит две одинаковые буквы, содержащиеся в заданном слове.

Исходные данные:

Название: 1) S; 2) h.

Описание: 1) Исходный массив(заданное слово) – параметр подпрограммы, передаётся из основной программы в виде набора символов.

Тип и диапазон: 1) char

Результат:

Название: cout

Описание: Подпрограмма выводит на печать значение переменой h.

Тип и диапазон: char.

Исключительные ситуации:

Описание: 1) в слове не содержится одинаковых букв 2) слово состоит из всех одинаковых букв 3) не корректное задание массива

Обработка: 1), 2) - выводится число «-1». 3) выведется сообщение о том, что при построении программы были обнаружены ошибки.

Описания используются для интерпретации каждого из идентификаторов; необязательно, чтобы они сопровождались выделением памяти, сопоставляемой с идентификатором. Описания имеют вид

спецификации-описания opt список-описателей opt ;
определение-функции
спецификация-связи

Описатели в списке-описателей (§R.8) содержат описываемые идентификаторы. Конструкция спецификации-описания может отсутствовать только в определении функций (§R.8.3) или в описании функций. Список-описателей может быть пустым, только при описании класса (§R.9) или перечисления (§R.7.2), т.е. когда спецификация-описания есть спецификация-класса или спецификация-перечисления. Конструкция описание-asm объясняется в §R.7.3, а спецификация-связи в §R.7.4. Описание происходит в определенной области видимости (§R.3.2), правила области видимости приводятся в §R.10.4.

R.7.1 Спецификации

В описании можно использовать следующие спецификации:

спецификация-описания:
спецификация-класса-памяти
спецификация-типа
спецификация-шаблона-типа
спецификации-описания:
спецификации-описания opt спецификация-описания

Самая длинная последовательность конструкций спецификация-описания, которая, возможно, является именем типа, образует в описании конструкцию спецификации-описания. Последовательность должна быть согласованной, что объясняется ниже. Например,

static Pc; // ошибка: нет имени

Здесь описание static Pc является незаконным, поскольку не указано никакого имени статической переменной типа Pc. Чтобы иметь переменную типа int с именем Pc, необходимо задать спецификацию-типа int, чтобы показать, что (пере)определяется имя Pc из typedef, а не просто Pc является одним из элементов последовательности конструкций спецификация-описания, например,

void f(const Pc); // void f(char* const)
void g(const int Pc); // void g(const int)

Укажем, что поскольку signed, unsigned, long и short по умолчанию трактуются как int, конструкция имя-typedef, которая появляется после одной из перечисленных спецификаций типа, должна задавать (пере)определяемое имя, например,

void h(unsigned Pc); // void h(unsigned int)
void k(unsigned int Pc); // void k(unsigned int)

R.7.1.1 Спецификации класса памяти

Спецификации класса памяти могут быть такие:

спецификация-класса-памяти:

Спецификации auto и register могут применяться только для имен объектов, которые описаны в блоке (§R.6.3), или для формальных параметров (§R.8.3). Почти всегда спецификация auto избыточна и используется не часто, так, auto используется, чтобы явно отделить оператор-описание от оператора-выражения (§R.6.2).

Описание register является описанием auto, которое подсказывает транслятору, что описываемые переменные будут использоваться достаточно интенсивно. Подсказка может быть проигнорирована, и во многих реализациях она игнорируется в том случае, когда берется адрес переменной.

Описание объекта считается определением, если только оно не содержит спецификации extern и инициализации (§R.3.1).

Определение приводит к выделению памяти соответствующего размера и выполнению соответствующей инициализации (§R.8.4).

Спецификации static и extern могут применяться только к именам объектов или функций или к анонимным объединениям. Внутри блока недопустимы описания функций со спецификацией static или формальных параметров со спецификацией static или extern. Статические члены класса описываются в §R.9.4. Спецификация extern недопустима для членов класса.

Имя со спецификацией static подлежит внутреннему связыванию. Объекты, описанные как const, подлежат внутреннему связыванию, если только они не были описаны с внешней связью. Имя со спецификацией extern подлежит внешнему связыванию, если только ранее оно не было описано с внутренней связью. Имя с файловой областью видимости и без спецификации-класса-памяти подлежит внешнему связыванию, если только ранее оно не было описано с внутренней связью или со спецификацией const. В смысле связывания для функций, не являющихся членами, спецификация inline эквивалентна static (§R.3.3). Для одного имени все его спецификации, определяющие связывание, должны быть согласованы. Например,

static char* f(); // f() имеет внутреннее связывание
char* f() // f() все еще внутреннее
char* g(); // g() имеет внешнее связывание
static char* g() // ошибка: противоречие в связывании
static int a; // `a" имеет внутреннее связывание
int a; // ошибка: второе определение
static int b; // `b" имеет внутреннее связывание
extern int b; // `b" все еще внутреннее
int c; // `c" имеет внешнее связывание
static int c; // ошибка: противоречие в связывании
extern int d; // `d" имеет внешнее связывание
static int d; // ошибка: противоречие в связывании

Имя неопределенного класса можно использовать в описании extern. Однако, такое описание нельзя использовать прежде, чем класс будет определен, например,

g(a); // ошибка: S неопределено
f(); // ошибка: S неопределено

R.7.1.2 Спецификации функций

Некоторые спецификации можно использовать только в описании функций.

Спецификация inline подсказывает транслятору, что необходимо произвести подстановку тела функции вместо обычной реализации вызова функции. Подсказка может игнорироваться. В случае функций, не являющихся членами, спецификация inline дополнительно устанавливает для функции внутреннее связывание (§R.3.3). Функция (§R.5.2.2, §R.8.2.5), определенная в описании класса, имеет по умолчанию спецификацию inline.

Функция-член со спецификацией inline должна иметь в точности такое же определение в каждой единице трансляции, где она появляется.

Функцию-член не обязательно явно описывать со спецификацией inline при описании класса, чтобы она трактовалась как подстановка. Если спецификации inline не было, связывание будет внешним, если только определение со спецификацией inline не появится перед первым вызовом функции.

inline int g(); // X::g() имеет внутреннее связывание

int i = p-›f(); // теперь X::f() внешнее связывание

inline int X::f() // ошибка: вызов до определения

inline int X::h() // теперь X::h() имеет внутреннее связывание

Спецификация virtual может использоваться только в описаниях нестатических функций-членов при описании класса (см. §R.10.2).

R.7.1.3 Спецификация typedef

Описания со спецификацией typedef задают идентификаторы, которые позднее могут использоваться для обозначения основных или производных типов. Спецификация typedef недопустима в определении-функции (§R.8.3).

В пределах области видимости (§R.3.2) описания typedef любой идентификатор, появляющийся в части любого из описателей, становится синтаксически эквивалентным служебному слову и обозначает тип, связанный с данным идентификатором, как описано в §R.8. Таким образом, имя-typedef является синонимом другого типа. В отличие от описания класса (§R.9.1) имя-typedef не добавляет нового типа. Например, после описания

конструкции

являются законными описаниями, тип distance есть int, а у metricp тип "указатель на int".

С помощью typedef можно переопределить имя так, чтобы оно опять обозначало тип, на который уже ссылалось, причем даже в той области видимости, в которой тип был первоначально описан, например,

typedef struct s {/*… */} s;

Безымянный класс, который определяется в typedef, получает в качестве своего имени имя, использованное в typedef, например,

typedef struct {/*… */} S; // имя структуры стало S

С помощью описания typedef нельзя переопределить имя типа, описанного в этой же области видимости, так, чтобы оно обозначало другой тип, например,

typedef int complex; // ошибка: переопределение

Аналогично, нельзя описывать класс с именем типа, описанного в этой же области видимости, так, чтобы он обозначал другой тип, например,

class complex {/*… */}; // ошибка: переопределение

Имя-typedef, которое обозначает класс, является именем-класса (§R.9.1). Синоним нельзя использовать после следующих префиксов: class, struct и union, а также в именах конструкторов и деструкторов в описании самого класса, например,


S a = T(); // нормально

R.7.1.4 Спецификация шаблона типа

Спецификация шаблона типа используется для задания семейства типов или функций (см. §R.14).

R.7.1.5 Спецификация friend

Спецификация friend используется для задания доступа к членам класса (см. §R.11.4).

R.7.1.6 Спецификация типа

К спецификации типа относятся:

спецификация-типа:
имя-простого-типа
спецификация-класса
спецификация-перечисления
спецификация-сложного-типа

При описании объекта служебные слова const и volatile можно добавить к любой законной спецификации-типа. Во всех других случаях в описании может присутствовать не более одной спецификации-типа. Объект со спецификацией const можно инициализировать, но его значение не должно изменяться в дальнейшем. Объект со спецификацией const, если только он не был явно описан как extern, не подлежит внешнему связыванию и должен инициализироваться (§R.8.4, §R.12.1). Целое со спецификацией const, инициализированное выражением-константой, может использоваться в выражении-константе (§R.5.19). Каждый элемент массива со спецификацией const имеет ту же спецификацию, а каждый нестатический член, не являющийся функцией, из объекта класса со спецификацией const сам считается const (§R.9.3.1). Объект типа без конструктора или деструктора, который имеет спецификацию const, может быть помещен в память, доступную только по чтению. Попытка записи в любую часть такого объекта или приведет к особой адресной ситуации, или пройдет бесследно, как если бы объект не имел спецификации const.

Не существует не зависящего от реализации объяснения объектов со спецификацией volatile. Она служит подсказкой транслятору избегать слишком активной оптимизации, связанной с этим объектом, поскольку значение объекта может изменяться способами, скрытыми от транслятора. Каждый элемент массива со спецификацией volatile имеет ту же спецификацию и каждый нестатический член, не являющийся функцией, из объекта класса со спецификацией volatile сам считается volatile (§R.9.3.1).

Если спецификация-типа отсутствует в описании, она считается заданной как int.

имя-простого-типа:
полное-имя-класса
уточненное-имя-типа

Вместе с int нельзя задавать более одного служебного слова long или short. Они могут использоваться и поодиночке, тогда считается, что тип есть int. Служебное слово long может появиться вместе с double. Вместе с char, short, int или long нельзя задавать более одного служебного слова signed или unsigned. Они могут использоваться и поодиночке, тогда считается, что тип есть int. Спецификация signed указывает, что объекты типа char и битовые поля являются знаковыми, для других целочисленных типов эта спецификация избыточна.

Конструкции спецификация-класса и спецификация-перечисления определяются в §R.9 и §R.7.2 соответственно.

спецификация-сложного-типа:
служебное-слово-класса имя-класса
служебное-слово-класса идентификатор
служебное-слово-класса:

Если задан идентификатор, спецификация-сложного-типа описывает его как имя-класса (см. §R.9.1).

Если определено имя, которое описывается с помощью спецификации union, то оно должно быть определено как объединение. Если определено имя, которое описывается с помощью спецификации class, то оно должно быть определено с помощью спецификаций class или struct. Если определено имя, которое описывается с помощью спецификации struct, оно должно быть определено с помощью спецификации class или struct. Имена вложенных типов (§R.9.7) должны уточняться именем объемлющего класса:

уточненное-имя-типа:
имя-класса:: уточненное-имя-типа
полное-имя-класса:
уточненное-имя-класса
:: уточненное-имя-класса
уточненное-имя-класса:
имя-класса:: уточненное-имя-класса

Имя, уточненное именем-класса должно быть типом, определенным в этом классе или в базовом классе этого класса. Как обычно, имя, описанное в производном классе, делает невидимыми члены с этим именем из базовых классов (см. §R.3.2).

R.7.2 Описание перечисления

Перечисление является отдельным целочисленным типом (§R.3.6.1) с константами-именами. Его имя в своей области видимости становится конструкцией имя-перечисления, т.е. служит зарезервированным словом.

имя-перечисления:
спецификация-перечисления:
enum идентификатор opt { список-перечисления }
список-перечисления:
элемент-перечисления
список-перечисления, элемент-перечисления
элемент-перечисления:
идентификатор = выражение-константа

Все идентификаторы из списка-перечисления считаются описанными как константы и могут появляться всюду, где требуются константы. Если не было элементов перечисления с =, то значения констант начинаются с нуля и последовательно увеличиваются на единицу по мере продвижения в списке слева направо. Если элемент перечисления встретился с =, то его идентификатор принимает заданное значение, а последующие идентификаторы без инициализирующей части будут получать возрастающие значения, начиная с заданного. Значение элемента перечисления должно быть типа int или значением, которое можно привести к int с помощью стандартных целочисленных преобразований (§R.4.1).

Имена элементов перечисления должны быть отличны от имен обычных переменных и других элементов перечисления той же области видимости. Значения элементов перечисления не обязаны отличаться друг от друга. Считается, что элемент перечисления описан с момента появления его идентификатора или инициализирующего значения, (если оно есть). Например, в определениях

значения a, c, и d заданы как 0, b и e как 1, а f как 3.

Каждое перечисление является целочисленным типом, который отличен от всех других целочисленных типов. Типом элемента перечисления считается данное перечисление. Значение элемента перечисления или объекта типа перечисления преобразуется к целому с помощью стандартных целочисленных преобразований (§R.4.1). Например, в следующем фрагменте:

enum color {red, yellow, green=20, blue};

color задан как целочисленный тип, описывающий разные цвета, col описан как объект этого типа, а cp как указатель на объект этого типа. Возможными значениями объекта типа color являются red, yellow, green, blue. Эти значения можно преобразовать в целые значения 0, 1, 20 и 21. Поскольку каждое перечисление - это отдельный тип, объекту типа color можно присваивать только значения типа color, например,

color c = 1; // ошибка: несоответствие типов
// нет преобразования от int в color
int i = yellow; // нормально: yellow преобразуется в int со значением 1
// стандартное целочисленное преобразование

Обратитесь также к §R.18.3.

Элементы перечисления, определенные в классе (§R.9), относятся к области видимости этого класса, и к ним можно обращаться извне функций-членов этого класса только с помощью явного уточнения именем класса (§R.5.1). Имя самого типа перечисления локально в этом классе (§R.9.7), например,

список-описаний:
список-описаний описание

Требуемое связывание задается с помощью строки-литерала. Ее назначение определяется реализацией. Но во всех реализациях должно быть предусмотрено связывание с функцией на языке C ("C") и с функцией на языке C++ ("C++"). По умолчанию связывание задается как "C++", например,

complex sqrt(complex); // по умолчанию связывание с C++
double sqrt(double); // связывание с C

Спецификации связи могут быть вложенными. Спецификация связи не задает область видимости. Спецификация-связи может встретиться только в файловой области видимости (§R.3.2). Спецификация-связи для класса относится к объектам, описанным в нем, и функциям, не являющимся членами. Спецификация-связи, относящаяся к некоторой функции, относится и ко всем объектам и функциям, описанным в ней. Описание связи, содержащее неизвестную для реализации строку, считается ошибочным.

Если функция имеет более одной спецификации-связи, то они должны быть согласованы, т.е. задавать одну и ту же строку-литерал. Описание функции без указания спецификации-связи не должно предшествовать первому указанию спецификации связи для этой функции. Функция может быть описана без указания спецификации связи даже после явного указания спецификации связи, но связывание, явно заданное в более раннем описании, не будет устранено таким описанием функции.

Из множества перегруженных функций (§R.13) с данным именем не более одной может иметь связывание с языком C, см. §R.7.4.

Связывание можно установить для объектов, например:

int _flsbuf(unsigned,_iobuf*);

Когда задается спецификация связи, то функции и объекты можно описать как статические внутри { }. Для таких функций или объектов команда связывания игнорируется. Иначе, функция, описанная при задании связи, трактуется, как если бы она была явно описана как extern, например, ниже второе описание ошибочно (§R.7.1.1):

static double f(); // ошибка

Объект, описанный внутри конструкции

все же считается определенным, а не просто описанным.

Связывание объектов на C++ с объектами, определенными на других языках, так же как и обратное связывание, зависит от языков и реализации. Такое связывание возможно только в том случае, когда алгоритмы размещения объектов в памяти являются достаточно схожими для двух языков.

Если для задания связи в строке-литерале из спецификации-связи используется имя языка программирования, то рекомендуется, чтобы написание этого имени копировалось из документа, определяющего данный язык, например, Ada (а не ADA) и Fortran (а не FORTRAN).

Смазочные материалы начали использоваться еще задолго до нашей эры. И если раньше в качестве них применялись растительные жиры и жиры животного происхождения, то начиная с 60-х годов прошлого века их заменили продукты нефтепереработки. После этого началось активное развитие и совершенствование моторных масел, а около 70 лет назад появились первые полимерные модификаторы вязкости, благодаря которым вскоре в моторных маслах появились разные классы и разновидности, отвечающие температурному режиму определенного времени года, а также появились всесезонные виды смазочных материалов.

С того момента состав и технические качества масел претерпели множество изменений, однако их основное предназначение осталось неизменным. Моторное масло призвано покрывать тонкой, но при этом прочной, пленкой движущиеся детали, защищая тем самым их от трения между собой.

На сегодняшний день существует несколько систем классификации масел, которые позволяют разделить смазочные материалы по их эксплуатационным качествам, техническим характеристикам, а также назначению. Среди основных общепринятых систем одной из самых известных является классификация моторных масел по API. Она была введена в конце 50-х годов нашего века Американским Институтом Нефти, и основополагающим принципом в ней является классификация по двум категориям - S и C, то есть для бензиновых и дизельных двигателей соответственно.

Спецификации масел S и C

Как уже отмечено выше, система API предполагает деление на две основные категории, однако существует и третье обозначение качества смазочных материалов. Из них каждый вид является самостоятельным:

Все эти стандарты обозначаются индексом из двух букв, например, SN, SM, SH, SG, CF, CI, где второе значение является показателем по уровню эксплуатационных характеристик. При этом, чем ближе к концу латинского алфавита находится буква, имеющаяся в обозначении, тем выше уровень масла по API. Например, такое обозначение на продукте как API SL, SM или SN означает превосходство над API SF.

Бензиновые двигатели: классы качества, их обозначения и расшифровка

Группа Описание
SN Смазочные материалы SN отличаются от предшествовавших этой категории SM спецификаций тем, что в них содержится намного меньше фосфора, что наделяет их дополнительными энергосберегающими качествами и делает SN совместимыми с новейшими системами, направленными на нейтрализацию выхлопных газов. Класс SN утвержден осенью 2010 года и применяется в моторах самых современных автомобилей. Стоит отметить, что масла со спецификацией API SN по своим характеристикам близки ACEA C2, C3, C4, поэтому SN могут успешно заменять собой смазку класса SM.
SM SM впервые ввели в конце 2004 года. Этот класс сегодня более распространен, чем CN, ведь он предназначается для современных бензиновых моторов, включая много клапанные и турбированные двигатели. Смазка этой категории разрабатывалась с учетом совершенствования двигателей, поэтому призвана повышать их экологическую безопасность и быть более износостойкой. SM отличается от предыдущей категории SL большей стойкостью к окислению превосходными защитными свойствами от образования осадкой и отложений, что безусловно сказывается на высоком качестве смазочных материалов. Спустя два года после выпуска SM была разработана категория масел для дизельных моторов с обозначением CJ4.
Продукты спецификации SM предназначены для автомобилей с 2004 года выпуска, и разработаны именно для них.
SL Класс SL был разработан незадолго до выхода SM и SN. Он разработан для двигателей автомобилей, выпущенных с 2001 года, и абсолютно отвечает всем современным стандартам и требованиям, включая высокую экологичность и энергосбережение. SL предназначаются для современных моторов, в том числе многоклапанных, турбированных и двигателей, приспособленных для работы на обедненных смесях топлива. На смазочных материалах группы SL вполне могут работать и двигатели, для которых предназначены продукты категории SJ.
Благодаря таким свойствам, как пониженная летучесть, SL отличаются долгим сохранением своих качеств, благодаря чему интервал замены моторного масла заметно увеличивается. На сегодняшний день эта категория является действующей и широко применяется современными автовладельцами.
SJ Этот класс также является действующим на сегодняшний день. Его утвердили в ноябре 1995 года, хотя сертификацию продукт прошел лишь спустя год. Поэтому масла категории SJ используют для автомобилей с бензиновым двигателем, начиная с 1996 года выпуска. Их успешно применяют в моторах легковых и спортивных авто, а также в двигателях микроавтобусов и небольших грузовых машин.
SJ показывает хорошие технические характеристики, в том числе устойчивость к образованию осадков и нагара, а также способность сохранять свои свойства при пониженных температурах. По этим свойствам масла категории SJ очень близки к продуктам класса SH, поэтому вполне пригодны для использования в том случае, когда автопроизводителем рекомендовано использование для машины масла категории SH.
SH Эта категория была создана в 1992 году и считается условно действующей. Масла, входящие в эту группу, применяются в моторах авто 1996 года выпуска и ранее. По своим качествам этот класс превосходит масла категории SG, ведь он разрабатывался с целью ее заменить. Поэтому масла класса SH успешно используются для автомобилей, в которых рекомендуется применять SG.
SG Класс SG предназначены для моторов, выпущенных в 1193 и раньше. Масла этой категории отличаются превосходной защитой от нагара и устойчивы к процессам окисления и образованию коррозии. Масла SG отвечают всем требованиям для моторных масел, предназначенных для дизельных двигателей API CC, а значит SG могут применяться для машин, в которых производитель рекомендует использовать категории SF и SF/CC, а также SE и SE/CC.

Спецификация масел для дизельных моторов

Среди современных спецификаций моторных масел наибольшей популярностью пользуются масла класса CI и CF. Именно они разработаны с учетом всех особенностей современных дизельных моторов и отвечают всем стандартам.

CI Категория CI -4 утверждена в 2002 году. Они рассчитаны на различные дизельные моторы, продукты спецификации CI обладают высокой устойчивостью к окислению и содержат диспергирующие присадки. CI довольно экологичны, по сравнению с предыдущими классами масел. Стоит отметить, что из общей категории CI выделяют еще один класс - CI -4 PLUS. Усовершенствованный класс CI -4Plus выведен с учетом жестких требований к испаряемости масла, его окислению при повышенных температурах и образованию нагара.
CF Спецификация CF создана для дизельных моторов с непрямым впрыском. Они отличаются высоким содержанием различных присадок, которые предотвращают отложения на поршнях, а также защищают от износа и образования коррозии внутренних деталей с содержанием меди, к примеру, подшипников.
Класс CF может иметь обозначения CF-4 и CF-2, что значит автомасла, предусматривающие применение в четырехтактных и двухтактных (соответственно) дизельных двигателях.
При этом CF-4 рассчитаны на двигатели, работающие в ускоренном режиме, а CF-2 идеально подходят для моторов, которые постоянно подвергаются повышенным нагрузкам.

Видео «Классификации API»

В продолжение темы:
Решение проблем

Мысли о том, чтобы написать статью вроде этой, у меня возникли довольно давно. Ну а подтверждением того, что это и впрямь стоит сделать, стали повторяющиеся вопросы наших...

Новые статьи
/
Популярные