2010-11-23 2 views
6

На этой ссылке я наткнулся http://lxr.linux.no/#linux+v2.6.36/include/linux/pci.h#L299 целочисленного декларации unsigned int is_added:1; Я сделал программы C и объявлены целые числа в них, но в приведенном выше я вижу использование : Что вроде синтаксиса?как объявить беззнаковый Int в программе C

+3

Возможно, это какая-то препроцессорная магия. – OmnipotentEntity 2010-11-23 07:00:13

+17

Почему, черт возьми, вышеупомянутый комментарий имеет 2 upvotes? – 2010-11-23 07:09:02

+1

@OmnipotentEntity: No. – jamesdlin 2010-11-23 09:00:26

ответ

3

Это часть struct, что означает, что это указывает на то, что поле следует использовать только определенное число битов вместо целого байта или больше.

1

Это означает, что будет использоваться только один бит.

0

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

3

Это объявление битового поля в массиве. Число post ":" обозначает количество бит для выделения этому конкретному полю структуры.

Хотя вам нужно быть осторожным с битовыми полями, поскольку их двоичное представление не переносимо. То есть вы передаете двоичные blobs между интерфейсами, скомпилированными с разными компиляторами, это может не сработать.

Смежные вопросы