Книга: Разработка ядра Linux
Инициализация структур
Инициализация структур
Структуры необходимо инициализировать, используя метки полей. Это позволяет предотвратить некорректную инициализацию при изменении структур. Это также позволяет выполнять инициализацию не всех полей. К сожалению, в стандарте 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.
Да, это ужасно. Но у нас нет другого выбора.
- Инициализация Winsock
- Инициализация дескриптора безопасности
- Описание и инициализация указателя на структуру
- Инициализация структуры
- 5.5. Советы
- Системы с поддержкой Hyperthreading
- Управление памятью процесса
- Управление и манипуляции с объектами kobject
- Функции
- Использование того, что уже есть
- ГЛABA 6 Процессы, потоки и задания