Как происходит инициализация программы

Содержание

Инициализатор определяет начальное значение переменной. Можно инициализировать переменные в этих контекстах:

    В определении переменной:

int i = 3; Point p1< 1, 2 >;
set_point(Point< 5, 6 >);
Point get_new_point(int x, int y) < return < x, y >; > Point get_new_point(int x, int y) < return Point< x, y >; >

Инициализаторы могут принимать эти формы:

    Выражение (или разделенный запятыми список выражений) в скобках:

Point p1(1, 2);
string s = «hello»;
struct Point< int x; int y; >; class PointConsumer< public: void set_point(Point p)<>; void set_points(initializer_list my_list)<>; >; int main() < PointConsumer pc<>; pc.set_point(<>); pc.set_point(< 3, 4 >); pc.set_points(< < 3, 4 >, < 5, 6 >>); >

Типы инициализации

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

Занятие 31 — Инициализация в структурах и классах | Основы

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

Нулевая инициализация

Нулевая инициализация — задание для переменной нулевого значения, неявно преобразованного в тип:

  • Числовые переменные инициализируются значением 0 (или 0,0; 0,0000000000 и т.п.).
  • Переменные char инициализируются в ‘’ .
  • Указатели инициализируются на nullptr .
  • Массивы, классы POD , структуры и объединения инициализируют свои члены нулевым значением.

Нулевая инициализация выполняется в разное время:

  • При запуске программы — для всех именованных переменных, имеющих статическую длительность. Далее эти переменные могут быть инициализированы повторно.
  • Во время инициализации значений — для скалярных типов и типов класса POD, которые инициализируются с помощью пустых фигурных скобок.
  • Для массивов, у которых инициализировано только подмножество членов.

Ниже приведены некоторые примеры нулевой инициализации:

struct my_struct< int i; char c; >; int i0; // zero-initialized to 0 int main() < static float f1; // zero-initialized to 0.000000000 double d<>; // zero-initialized to 0.00000000000000000 int* ptr<>; // initialized to nullptr char s_array[3]; // the third char is initialized to ‘’ int int_array[5] = < 8, 9, 10 >; // the fourth and fifth ints are initialized to 0 my_struct a_struct<>; // i = 0, c = ‘’ >

Инициализация по умолчанию

Инициализация по умолчанию для классов, структур и объединений — это инициализация с помощью конструктора по умолчанию. Конструктор по умолчанию можно вызвать без выражения инициализации new или с ключевое слово:

MyClass mc1; MyClass* mc3 = new MyClass;

Если у класса, структуры или объединения нет конструктора по умолчанию, компилятор выдает ошибку.

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

Инициализация SSD диска Windows 11/10/8/7 — 2 Быстрых Способа!


int i1; float f; char c;

Массивы инициализируются по умолчанию, если они определены без выражения инициализации. Если массив инициализируется по умолчанию, его члены инициализируются по умолчанию и приобретают неопределенные значения как в приведенном ниже примере.

int int_arr[3];

Если элементы массива не имеют конструктора по умолчанию, компилятор выдает ошибку.

Инициализация по умолчанию константных переменных

Константные переменные необходимо объявлять вместе с инициализатором. Если это скалярные типы, они вызывают ошибку компилятора, а если это типы классов с конструктором по умолчанию, они вызывают предупреждение:

class MyClass<>; int main() < //const int i2; // compiler error C2734: const object must be initialized if not extern //const char c2; // same error const MyClass mc1; // compiler error C4269: ‘const automatic data initialized with compiler generated default constructor produces unreliable results >

Инициализация по умолчанию статических переменных

Статические переменные, объявленные без инициализатора, инициализируются значением 0 (с неявным преобразованием к соответствующему типу).

class MyClass < private: int m_int; char m_char; >; int main() < static int int1; // 0 static char char1; // ‘’ static bool bool1; // false static MyClass mc1; // >

Дополнительные сведения об инициализации глобальных статических объектов см. в разделе main аргументы функции и командной строки.

Инициализация значения

Инициализация значения происходит в следующих случаях:

  • Именованное значение инициализируется с использованием пустых фигурных скобок.
  • Анонимный временный объект инициализируется с помощью пустых круглых или фигурных скобок.
  • объект инициализируется new с помощью ключевое слово плюс пустые круглые скобки или фигурные скобки

При инициализации значения выполняются следующие действия:

  • Для классов, имеющих хотя бы один открытый конструктор, вызывается конструктор по умолчанию.
  • Для классов nonunion без объявленных конструкторов объект инициализируется с нуля и вызывается конструктор по умолчанию.
  • В случае массивов каждый элемент инициализируется значением.
  • Во всех остальных случаях переменная инициализируется нулевым значением.

class BaseClass < private: int m_int; >; int main() < BaseClass bc<>; // class is initialized BaseClass* bc2 = new BaseClass(); // class is initialized, m_int value is 0 int int_arr[3]<>; // value of all members is 0 int a<>; // value of a is 0 double b<>; // value of b is 0.00000000000000000 >

Инициализация копированием

Инициализация копированием — это инициализация одного объекта с использованием другого объекта. Она выполняется в следующих случаях:

  • Переменная инициализируется с помощью знака равенства.
  • Аргумент передается в функцию.
  • Объект возвращается функцией.
  • Возникает или перехватывается исключение.
  • Нестатический элемент данных инициализируется с помощью знака равенства.
  • Класс, структура и члены объединения инициализируются с применением инициализации путем копирования во время агрегатной инициализации. Примеры см. в разделе Агрегированная инициализация .

Следующий код демонстрирует несколько примеров инициализации копированием.

#include using namespace std; class MyClass < public: MyClass(int myInt) <>void set_int(int myInt) < m_int = myInt; >int get_int() const < return m_int; >private: int m_int = 7; // copy initialization of m_int >; class MyException : public exception<>; int main() < int i = 5; // copy initialization of i MyClass mc1< i >; MyClass mc2 = mc1; // copy initialization of mc2 from mc1 MyClass mc1.set_int(i); // copy initialization of parameter from i int i2 = mc2.get_int(); // copy initialization of i2 from return value of get_int() try < throw MyException(); >catch (MyException ex) < // copy initialization of ex cout >

Читайте также:
Программы поддержки малого бизнеса являются фактором спроса

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

vector v = 10; // the constructor is explicit; compiler error C2440: can’t convert from ‘int’ to ‘std::vector>’ regex r = «a.*b»; // the constructor is explicit; same error shared_ptr sp = new int(1729); // the constructor is explicit; same error

В некоторых случаях, если конструктор копии класса удален или недоступен, копируемая инициализация вызывает ошибку компилятора.

Прямая инициализация

Прямая инициализация — это инициализация с использованием (непустых) круглых или фигурных скобок. В отличие от копируемой инициализации она может вызывать явные конструкторы. Она выполняется в следующих случаях:

  • Переменная инициализируется с помощью непустых круглых или фигурных скобок.
  • переменная инициализируется new с помощью ключевое слово плюс непустые фигурные скобки или круглые скобки
  • Переменная инициализируется с помощью . static_cast
  • В конструкторе базовые классы и нестатические члены инициализируются с помощью списка инициализации.
  • В копии захваченной переменной в лямбда-выражении.

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

class BaseClass < public: BaseClass(int n) :m_int(n)<>// m_int is direct initialized private: int m_int; >; class DerivedClass : public BaseClass < public: // BaseClass and m_char are direct initialized DerivedClass(int n, char c) : BaseClass(n), m_char(c) <>private: char m_char; >; int main()< BaseClass bc1(5); DerivedClass dc1< 1, ‘c’ >; BaseClass* bc2 = new BaseClass(7); BaseClass bc3 = static_cast(dc1); int a = 1; function func = [a]()< return a + 1; >; // a is direct initialized int n = func(); >

Инициализация списка

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

  • Инициализируется переменная.
  • класс инициализируется new с помощью ключевое слово
  • Объект возвращается функцией.
  • Аргумент передается функции.
  • Один из аргументов при прямой инициализации.
  • В инициализаторе нестатических элементов данных.
  • В списке инициализации конструктора.

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

class MyClass < public: MyClass(int myInt, char myChar) <>private: int m_int[]< 3 >; char m_char; >; class MyClassConsumer < public: void set_class(MyClass c) <>MyClass get_class() < return MyClass< 0, ‘’ >; > >; struct MyStruct< int my_int; char my_char; MyClass my_class; >; int main() < MyClass mc1< 1, ‘a’ >; MyClass* mc2 = new MyClass< 2, ‘b’ >; MyClass mc3 = < 3, ‘c’ >; MyClassConsumer mcc; mcc.set_class(MyClass< 3, ‘c’ >); mcc.set_class(< 4, ‘d’ >); MyStruct ms1 < 1, ‘a’, < 2, ‘b’ >>; >

Агрегатная инициализация

Агрегатная инициализация — форма инициализации списка для массивов и типов классов (часто структур и объединений), со следующими характеристиками:

  • Отсутствие закрытых или защищенных членов.
  • Отсутствие заданных пользователем конструкторов кроме явно заданных по умолчанию или удаленных конструкторов.
  • Отсутствие базовых классов.
  • Отсутствие виртуальных функций-членов.

В Visual Studio 2015 и более ранних версиях статистическому выражению не разрешено иметь инициализаторы с фигурными скобками или равными для нестатических элементов. Это ограничение было удалено в стандарте C++14 и реализовано в Visual Studio 2017.

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

#include using namespace std; struct MyAggregate< int myInt; char myChar; >; struct MyAggregate2< int myInt; char myChar = ‘Z’; // member-initializer OK in C++14 >; int main() < MyAggregate agg1< 1, ‘c’ >; MyAggregate2 agg2; cout ; int myArr2[3] = < 5, 6, 7 >; int myArr3[5] = < 8, 9, 10 >; cout cout cout

Вы должны увидеть следующий результат.

agg1: c: 1 agg2: Z: 2 myArr1: 1 2 3 4 myArr3: 8 9 10 0 0

Элементы массива, объявленные, но не инициализированные явно во время статистической инициализации, инициализируются с нуля, как показано myArr3 выше.

Инициализация объединений и структур

Если у объединения нет конструктора, его можно инициализировать с помощью одного значения (или с помощью другого экземпляра объединения). Значение используется для инициализации первого нестатического поля. Это отличается от инициализации структур, где первое значение в инициализаторе используется для инициализации первого поля, второе — для инициализации второго поля и т. д. Сравните инициализацию объединений и структур в следующем примере:

struct MyStruct < int myInt; char myChar; >; union MyUnion < int my_int; char my_char; bool my_bool; MyStruct my_struct; >; int main() < MyUnion mu1< ‘a’ >; // my_int = 97, my_char = ‘a’, my_bool = true, MyUnion mu2< 1 >; // my_int = 1, my_char = ‘x1’, my_bool = true, MyUnion mu3<>; // my_int = 0, my_char = ‘’, my_bool = false, MyUnion mu4 = mu3; // my_int = 0, my_char = ‘’, my_bool = false, //MyUnion mu5< 1, ‘a’, true >; // compiler error: C2078: too many initializers //MyUnion mu6 = ‘a’; // compiler error: C2440: cannot convert from ‘char’ to ‘MyUnion’ //MyUnion mu7 = 1; // compiler error: C2440: cannot convert from ‘int’ to ‘MyUnion’ MyStruct ms1< ‘a’ >; // myInt = 97, myChar = ‘’ MyStruct ms2< 1 >; // myInt = 1, myChar = ‘’ MyStruct ms3<>; // myInt = 0, myChar = ‘’ MyStruct ms4; // myInt = 1, myChar = ‘a’ MyStruct ms5 = < 2, ‘b’ >; // myInt = 2, myChar = ‘b’ >

Инициализация статистических выражений, содержащих статистические выражения

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

struct MyStruct < int myInt; char myChar; >; int main() < int intArr1[2][2], < 3, 4 >>; int intArr3[2][2] = ; MyStruct structArr[]< < 1, ‘a’ >, < 2, ‘b’ >, >; >

Читайте также:
Как установить офисные программы для Андроид

Инициализация ссылок

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

// initializing_references.cpp int iVar; long lVar; int main() < long // No conversion required. long // Error C2440 const long // OK LongRef1 = 23L; // Change lVar through a reference. LongRef2 = 11L; // Change iVar through a reference. LongRef3 = 11L; // Error C3892 >

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

Хотя синтаксис может быть одинаковым, инициализация переменных ссылочного типа и присваивание значений переменным ссылочного типа семантически различаются. В предыдущем примере присваивания, которые изменяют значения переменных iVar и lVar , выглядят аналогично инициализации, но имеют другой эффект. Инициализация определяет объект, на который указывает переменная ссылочного типа; при присваивании через ссылку производится присваивание значения объекту, на который указывает ссылка.

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

Переменные ссылочного типа можно объявлять без инициализаторов только в указанных ниже случаях.

    Объявления функций (прототипы). Пример:

int func( int
class c ;
extern int

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

Граф принятия решений начинается со следующего: является ли инициализатор значением того же типа или типом, производным от типа ссылки? Если да, ссылка ссылается на объект, указанный в инициализаторе. Если нет, следующее решение заключается в том, является ли переменная ссылочного типа инициализированной ссылкой const T и может ли инициализатор неявно преобразоваться в T? Если да, создается временная переменная, а ссылочная переменная становится именем этой временной. Если нет, это ошибка.

Граф принятия решений для инициализации ссылочных типов

volatile Ссылки на типы (объявленные как volatile идентификаторимени типа) можно инициализировать объектами const того же типа (или объектами, которые не были объявлены как const ). Однако их нельзя инициализировать с volatile помощью объектов этого типа.

Ссылки, не соответствующие const volatile ни ключевое слово, можно инициализировать только объектами, объявленными как const ни , ни volatile .

Инициализация внешних переменных

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

Источник: learn.microsoft.com

Инициализация — что такое? Приведение программы или устройства в состояние готовности к использованию

Многие пользователи компьютерной и мобильной техники достаточно часто сталкиваются с термином «инициализация». Что такое инициализация, в основном мало кто себе представляет. Поэтому стоит попытаться восполнить этот пробел в знаниях, приведя конкретные примеры.

Инициализация – что такое в общем понимании

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

инициализация что такое

Инициализация, как некий процесс определения заданных параметров или их значений, в равной степени может применяться и к программным, и к аппаратным компонентам компьютерной системы.

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

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

Основные направления инициализации

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

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

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

Поэтому, особо не вдаваясь в технические особенности процессов, остановимся на каждом конкретном случае отдельно.

Каким образом происходит инициализация программы

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

Например, для ассемблерных программ, представленных в большинстве случаев исполняемыми файлами форматов COM и EXE, процесс инициализации состоит из четырех основных этапов:

  • указание на то, какие именно сегментные регистры должны соответствовать определенным сегментам;
  • сохранение адреса регистра DS в стеке при старте исполнения программы;
  • запись в стек нулевого адреса;
  • загрузка в DS-регистр адреса сегмента.

инициализация диска

При обработке соответствующих массивов данных процесс имеет циклический характер, когда значения в массив, начинающийся с переменной со значением 0 или 1, попадают только после прохождения полного цикла и по мере выполнения приложения. И циклов может быть ровно столько, сколько переменных содержит весь массив.

Вопросы инициализации жестких дисков

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

строка инициализации

Инициализация диска на начальной стадии, если использовать средства Windows-систем, производит определение нового раздела путем сопоставления атрибутов загрузочных записей (MBR или GPT).

Читайте также:
Программа которая сохраняет пароли на телефоне

Далее применяется процесс создания простого тома, указание действительного размера, присвоение литеры (чтобы система «увидела» диск), а только потом начинается форматирование с выбором соответствующей файловой системы (в большинстве случаев NTFS).

На этом этапе и завершается инициализация. Что такое инициализация в данном случае? Это комплекс мер по установке параметров винчестера, а не единичный процесс, как утверждают некоторые.

Подсистема печати

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

ошибка инициализации что делать

Эти параметры и используются для установок подсистемы печати. Таким образом, приведенный в начальное состояние принтер будет работать корректно и без сбоев.

Инициализация на мобильных устройствах

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

каким образом происходит инициализация программы

Как правило, вводимое значение всегда имеет один и тот же вид – AT+CGDCONT=1,»IP»,»Название оператора или его интернет-ресурс». Но это касается только тех случаев, когда предполагается производить выход в интернет на компьютере через модем подключаемого мобильного устройства.

Ошибки инициализации и методы их устранения

Наконец, стоит отметить, что во всех приведенных примерах может возникнуть ошибка инициализации. Что делать в такой ситуации? В случае с жесткими дисками или устройствами для съемных носителей самым простым выходом станет проверка подключений к материнской плате.

В программах наиболее распространенным является сбой с кодом 0x0175dcbb (как, например, в игре Sims 3). В основном проблема касается конфликтов драйверов устройств, их отсутствия или некорректной установки, неработоспособности планок оперативной памяти и т. д. Иногда проблема может состоять в платформе .NET Framework, для которой нужно установить обновление. Возможно, сбой связан с повреждениями носителя, например, с которого запускается игра. В общем, мало ли что может приключиться. Но решение данной проблемы должно производиться на основе оценки самой ситуации и вызвавших сбой причин.

Источник: www.syl.ru

Большая Энциклопедия Нефти и Газа

Инициализация программы — действия, обычно выполняемые в начале программы, такие, как инициализация базовых регистров, сохранение исходного содержимого регистров, инициализация областей данных и другие, которые программист считает целесообразными перед входом в основную часть программы. [1]

После инициализации программы программист может лично вмешаться в выполнение программы и внести свои исправления обнаруженных ошибок с пульта АП. [2]

В псевдокоде следует рассмотреть инициализацию программы , реальные шаги обработки данных ( ввод данных пользователем, контроль ошибок, вычисление, выдача ответа) и завершение программы. [3]

Выберите соответствующую позицию и нажмите Enter, При первоначальной инициализации программы на жестком диске Вам будут предложены 2 варианта: сжатия всего диска и резервирования части диска, на которой сжатие файлов осуществляться не будет. Если Вы выберете вариант с резервированием пространства, то сжатый диск будет отображаться для Вас под прежним именем, а зарезервированное пространство на этом диске будет добавлено как новый логический диск. При установке SuperStor на диск С программа автоматически оставляет на диске пространство для считывания информации файла config. Во время процесса инициализации запрещается прерывать выполнение программы во избежание потери информации. После инициализации программы компьютер автоматически перезагружается при выходе из меню. [4]

Целесообразность использования этого режима заключается в том, что в период инициализации программы программист не имеет возможности вмешаться в выполнение программы с целью исправления ошибок. Поэтому выгодно, чтобы ошибки, обнаруженные в этот период, исправлялись хотя бы транслятором. При исправлении этих ошибок транслятор выдает сообщение, в котором указан тип выполненной корректуры. [5]

При выбранном истинном состоянии входного сообщения на рис. 4.43 срабатывает реле, а команды Инициализация программы и Включение лампочки сообщений не выполняется. [6]

В первом разделе меню расположены команды Инициализация и Параметры, которые используются для вызова диалоговых окон инициализации программы бюджетов ЦФО или ЦФУ и изменения параметров прогноза. Инициализация выполняется один раз в начале бюджетного периода. [7]

Класс приложения программы с многодокументным интерфейсом, подобно такому же классу SDI-приложения, управляет программой в целом и использует для инициализации программы функцию initlnstance. В программе MiniEdit класс приложения называется CMiniEditApp, его файл заголовков — MiniEdit. [8]

Если в программе открыт хотя бы один файл, то MFC заменяет надпись Recent File именем последнего открытого файла. MFC хранит их имена в файле инициализации программы ( MiniDraw. Windows, поэтому список команд сохраняется, когда пользователь выходит из программы и перезапускает ее. [10]

При прерывании в первой запоминается текущее ССП. Из второй ячейки новое ССП пересылается в регистр ССП для инициализации программы обработки прерывания . Дополнительная информация может также находиться в фиксированных областях реальной основной памяти. [11]

Все бюджеты имеют табличную структуру, в которой по вертикали располагаются строки бюджетных разделов, а по горизонтали колонки бюджетного периода. Детализация бюджетных разделов отслеживается с помощью отступов в их названиях. Месяц начала бюджетного периода и его длина задаются пользователем при инициализации программы . Программа добавляет суммирующие колонки годов. При необходимости первые месяцы ( максимум 6) могут разбиваться на декады. [12]

File отобразится список, содержащий до четырех последних открываемых файлов. При выходе из программы код мастера AppWizard сохраняет этот список в файле инициализации программы WinGreet . Windows, поэтому список восстанавливается при каждом следующем ее выполнении. [14]

Основная функция телекоммуникационного метода доступа — это управление передачей, приемом, анализом единиц работы, которые называются сообщениями. При этом необходимо анализировать ситуации, возникающие при взаимодействии линий связи, проверять занятость и доступность устройства и правильность передачи данных вообще. И все это — в дополнение к обычным функциям метода доступа: управлению вводом-выводом, управлению буферами, инициализацией программ чтения и записи, опросу, адресации и обработке сообщений, которые предоставляются программисту в виде обширного списка макрокоманд. [15]

Источник: www.ngpedia.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru