typedef enum...

Тема в разделе "WASM.WIN32", создана пользователем al79, 20 апр 2007.

  1. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Всем привет.
    Ксожалению я практически не знаю с++, поэтому спрашиваю, как будет выглядеть это на ASM-e

    typedef enum _USBD_PIPE_TYPE {
    UsbdPipeTypeControl,
    UsbdPipeTypeIsochronous,
    UsbdPipeTypeBulk,
    UsbdPipeTypeInterrupt
    } USBD_PIPE_TYPE;

    Заранее спасибо.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    UsbdPipeTypeControl equ 0
    UsbdPipeTypeIsochronous equ 1
    UsbdPipeTypeBulk equ 2
    UsbdPipeTypeInterrupt equ 3

    считай, что это просто объявление серии констант.
     
  3. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Спасибо 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;
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Зависит от настроек выравнивания, а вообще размер перечисления должен быть достаточен для хранения самого большого члена перечисления. То есть, если он меньше 256, то хватит и байта. А если оно в структуре, то тут уже правила выравнивания членов структур.
     
  5. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    спасибо буду разбираться.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    IceStudent
    насколько я помню, enum обычно приравнивается к int, то есть занимает 4 байта. я чето не видел ни вордовых ни байтовых енумов=\ хотя, хз, может плохо смотрел.
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Great
    Вообще по стандарту enum есть enum, тип перечисление, который сам является отдельным типом и не завязан ни накаких других типах. А во что он превратиться при приведении типов, в то и превратиться. То есть жёсткого формата здесь нету, и в зависимости от обстоятельстьв(привидения) он может занимать разное кол-во байт.

    al79
    Так что какой будет размер, нужно смотреть в контексте импользования.
    Но IceStudent правильно сказал, в контексте использования самого перечисления, наверно наименьшее из возможных размеров, но есно не факт, зависит от реализации, в стандарте об этом не сказано.
     
  8. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Booster
    В VC++ 8 можно определять "типизированные" енумы.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Great
    Проверил в VC - действительно, наименьший размер 4 байта. Хотя сколько помню, всегда утверждалось, что enum занимает наименьший размер.
     
  10. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Всем спасибо!
    Пока буду думать, что он 4 байта.