Инициализация структур

Инициализация структур

Структуры необходимо инициализировать, используя метки полей. Это позволяет предотвратить некорректную инициализацию при изменении структур. Это также позволяет выполнять инициализацию не всех полей. К сожалению, в стандарте C99 принят довольно "страшненький" формат меток полей, а в компиляторе gcc ранее использовавшийся формат меток полей в стиле GNU признан устаревшим. Следовательно, для кода ядра необходимо использовать новый формат, согласно стандарту C99, каким бы ужасным он ни был.

struct foo my_foo = {

 .a = INITIAL_A,

 .b = INITIAL_B,

};

где а и b — это поля структуры struct foo, а параметры INITIAL_A и INITIAL_B — соответственно, их начальные значения. Если поле не указано при инициализации, то оно устанавливается в свое начальное значение, согласно стандарту ANSI С (указателям присваивается значение NULL, целочисленным полям — нулевое значение, а полям с плавающей точкой— значение 0.0). Например, если структура struct foo также имеет поле int с, то это поле в предыдущем примере будет инициализировано в значение 0.

Да, это ужасно. Но у нас нет другого выбора.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

ГЛАВА 3. ИСПОЛЬЗОВАНИЕ СТРУКТУР ДАННЫХ

Из книги Программирование на языке Пролог автора Клоксин У.

ГЛАВА 3. ИСПОЛЬЗОВАНИЕ СТРУКТУР ДАННЫХ Оксфордский толковый словарь английского языка определяет слово «рекурсия» следующим образом:РЕКУРСИЯ. [Теперь употребляется редко, устаревшее.] Обратное движение, возвращение.Это определение загадочно и, по-видимому, устаревшее.


Операции над множеством для сортированных структур (Set operations on sorted structures)

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Операции над множеством для сортированных структур (Set operations on sorted structures) Этот раздел определяет все основные операции над множеством для сортированных структур. Они даже работают с множествами с дубликатами, содержащими множественные копии равных элементов. Семантика


Создание обобщенных структур (и классов)

Из книги Технологии программирования автора Камаев В А

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


Замечание о пустоте структур

Из книги Программирование на языке Пролог для искусственного интеллекта автора Братко Иван

Замечание о пустоте структур Предусловие в процедуре создания (конструкторе) make класса STACK1 требует комментария. Оно устанавливает n>=0 и, следовательно, допускает пустые стеки. Если n=0, то make вызовет процедуру создания для массивов, также имеющую имя make, с аргументами 1 и 0


4.3. ОБЩАЯ КЛАССИФИКАЦИЯ ЛОГИЧЕСКИХ СТРУКТУР ДАННЫХ

Из книги VBA для чайников автора Каммингс Стив

4.3. ОБЩАЯ КЛАССИФИКАЦИЯ ЛОГИЧЕСКИХ СТРУКТУР ДАННЫХ Упорядоченность элементов структуры данных является важным ее признаком.Программисты могут по своему усмотрению упорядочить данные разных программ бесчисленным множеством способов. Даже в одной и той же структуре


4.5. ПРОЕКТИРОВАНИЕ И ДОКУМЕНТИРОВАНИЕ ОПЕРАТИВНЫХ СТРУКТУР ДАННЫХ

Из книги Язык Си - руководство для начинающих автора Прата Стивен

4.5. ПРОЕКТИРОВАНИЕ И ДОКУМЕНТИРОВАНИЕ ОПЕРАТИВНЫХ СТРУКТУР ДАННЫХ Ряд рассмотренных структур данных можно реализовать с использованием статических структур данных, динамических переменных и динамических структур данных. Многовариантность реализации структур


5.8. КОДИРОВАНИЕ ТИПОВЫХ СТРУКТУР НА ЯЗЫКАХ ПРОГРАММИРОВАНИЯ

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

5.8. КОДИРОВАНИЕ ТИПОВЫХ СТРУКТУР НА ЯЗЫКАХ ПРОГРАММИРОВАНИЯ Обычно разработку алгоритмов программ совмещают с кодированием текста программы. Отдельное от программирования написание алгоритмов практически ничем не отличается от написания инструкций.Кодирование


Глава 4 Использование структур: примеры

Из книги Разработка ядра Linux автора Лав Роберт

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


Укрощение диких программ с помощью управляющих структур

Из книги автора

Укрощение диких программ с помощью управляющих структур Управляющие структуры можно разбить на три главные группы - условные операторы, циклы и операторы With.* Условный оператор определяет, какую из ветвей программного кода выполнять, в зависимости от того, какое


Описание массива структур

Из книги автора

Описание массива структур      Процесс описания массива структур совершенно аналогичен описанию любого другого типа массива: struct book libry [MAXBKS];Этот оператор объявляет libry массивом, состоящим из MAXBKS-элементов. Каждый элемент массива представляет собой структуру типа book.


Определение элементов массива структур

Из книги автора

Определение элементов массива структур      При определении элементов массива структур мы применяем те же самые правила, которые используются для отдельных структур: сопровождаем имя структуры операцией получения элемента и именем элемента: libry [0].value  value - первый


Сравнение структур адреса сокетов

Из книги автора

Сравнение структур адреса сокетов На рис. 3.1 показано сравнение пяти структур адресов сокетов, с которыми мы встретимся в тексте, предназначенных для IPv4, IPv6, доменного сокета Unix (см. листинг 15.1), канального уровня (см. листинг 18.1) и хранения. Подразумевается, что все


Заполнение структур

Из книги автора

Заполнение структур Структуры заполняются таким образом, чтобы каждый ее элемент имел естественное выравнивание. Например, рассмотрим следующую структуру данных на 32- разрядной машине.struct animal_struct { char           dog; /* 1 байт */ unsigned long  cat; /* 4 байт */ unsigned short pig; /* 2 байт