Всем привет. Ксожалению я практически не знаю с++, поэтому спрашиваю, как будет выглядеть это на ASM-e typedef enum _USBD_PIPE_TYPE { UsbdPipeTypeControl, UsbdPipeTypeIsochronous, UsbdPipeTypeBulk, UsbdPipeTypeInterrupt } USBD_PIPE_TYPE; Заранее спасибо.
UsbdPipeTypeControl equ 0 UsbdPipeTypeIsochronous equ 1 UsbdPipeTypeBulk equ 2 UsbdPipeTypeInterrupt equ 3 считай, что это просто объявление серии констант.
Спасибо Great! Но вот еще вопрос, а в данной структкре его воспринимать как байт, слово или двойное слово? typedef struct _USBD_PIPE_INFORMATION { ..... USBD_PIPE_TYPE PipeType; // PipeType identifies type of transfer valid for this pipe ....... } USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
Зависит от настроек выравнивания, а вообще размер перечисления должен быть достаточен для хранения самого большого члена перечисления. То есть, если он меньше 256, то хватит и байта. А если оно в структуре, то тут уже правила выравнивания членов структур.
IceStudent насколько я помню, enum обычно приравнивается к int, то есть занимает 4 байта. я чето не видел ни вордовых ни байтовых енумов=\ хотя, хз, может плохо смотрел.
Great Вообще по стандарту enum есть enum, тип перечисление, который сам является отдельным типом и не завязан ни накаких других типах. А во что он превратиться при приведении типов, в то и превратиться. То есть жёсткого формата здесь нету, и в зависимости от обстоятельстьв(привидения) он может занимать разное кол-во байт. al79 Так что какой будет размер, нужно смотреть в контексте импользования. Но IceStudent правильно сказал, в контексте использования самого перечисления, наверно наименьшее из возможных размеров, но есно не факт, зависит от реализации, в стандарте об этом не сказано.
Great Проверил в VC - действительно, наименьший размер 4 байта. Хотя сколько помню, всегда утверждалось, что enum занимает наименьший размер.