Visual Studio 2010: Список фич C++0x

Тема в разделе "LANGS.C", создана пользователем _DEN_, 14 фев 2010.

  1. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Booster
    Иногда размер имеет приоритет. Вспомните про bitfields.
    Да и при правильном проектировании структуры ни выравнивание, ни производительность не пострадают. Вы разве не используете в структурах 1-байтовые типы (bool, char)?
    Значения енума не обязаны быть непрерывным диапазоном. :)
    Большая разрядность нужна, если значения енума используются как флаги.
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    green
    Не вижу никаких проблем, перечисление станет uint64_t. Это фича узкоспецифична, для контроля значений в pod структурах.
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    green
    Флаги в uint64_t? Шутить изволите?
     
  4. green

    green New Member

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

    Иногда нужны битовые флаги и маски большой разрядности. Как прикажете поступить?
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    32+ штуки вполне нормально :)
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а вообще типизация енумов имхо достаточно полезна.
    видел кучу исходников где для типизации используются хаки типа:
    Код (Text):
    1. enum SomeEnum
    2. {
    3.     SomeField1,
    4.     SomeField2,
    5. ...
    6.     SomeFieldN,
    7.     SomeFieldPadding = 0xFFFFFFFF
    8. }
     
  7. make

    make New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2009
    Сообщения:
    59
    _DEN_
    типизированные енамы работают с 2005 в нативе, с 7.1 в managed
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    как там в новой студии с sizeof(long double), чему равно ?
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    8 наверно )
     
  10. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    если 8 то все по-прежнему :dntknw:
    могли бы ключик какой предусмотреть
     
  11. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Asterix, тебе правда 16 знаков double не хватает? Что за расчёты такие? Если динамический диапазон очень большой, то данные можно центрировать и нормализовать.
     
  12. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    W4FhLF
    80 bit long double юзает борланд, и меня напрягает при компиляции на MS VS ставить костыли
    или править хидеры где оно юзается, за примером далеко ходить не надо, в SDK OllyDbg
    юзается
     
  13. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Asterix
     
  14. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Intel это почему-то не остановило, в Intel C++ есть 80-bit long double :)
     
  15. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    cppasm
    в какой версии? помнится когда я экспериментировал не было
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ключ надо указывать для включения 10байтных лонгов.
     
  17. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    10.х в 9.х тоже было вроди.

    /Qlong-double enable 80-bit 'long double'
     
  18. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Asterix
    У тебя что где-то забит его размер? Надо юзать sizeof(long double) и тогда проблем возникать недолжно.
     
  19. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    W4FhLF
    не у меня, а у OllyDbg во внутренних структурах,
    а так как сам Olly компилился борманом, то чтобы получить данные
    из этой струтуры правильно(не мусор) нужно юзать 80 bit long double


    т.к. сам это поле структуры не юзаю, то чтоб не править хидеры самого Olly прикрутил
    костыли
    Код (Text):
    1. typedef struct LONG_DOUBLE {
    2.   char    buff[10];
    3. } LONG_DOUBLE;
    4.  
    5.  
    6. typedef struct t_reg_ {                // Excerpt from context
    7.   int            modified;             // Some regs modified, update context
    8.   int            modifiedbyuser;       // Among modified, some modified by user
    9.   int            singlestep;           // Type of single step, SS_xxx
    10.   ulong          r[8];                 // EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI
    11.   ulong          ip;                   // Instruction pointer (EIP)
    12.   ulong          flags;                // Flags
    13.   int            top;                  // Index of top-of-stack
    14.   LONG_DOUBLE    f[8];                 // Float registers, f[top] - top of stack
    15.   char           tag[8];               // Float tags (0x3 - empty register)
    16.   ulong          fst;                  // FPU status word
    17.   ulong          fcw;                  // FPU control word
    18.   ulong          s[6];                 // Segment registers ES,CS,SS,DS,FS,GS
    19.   ulong          base[6];              // Segment bases
    20.   ulong          limit[6];             // Segment limits
    21.   char           big[6];               // Default size (0-16, 1-32 bit)
    22.   ulong          dr6;                  // Debug register DR6
    23.   ulong          threadid;             // ID of thread that owns registers
    24.   ulong          lasterror;            // Last thread error or 0xFFFFFFFF
    25.   int            ssevalid;             // Whether SSE registers valid
    26.   int            ssemodified;          // Whether SSE registers modified
    27.   char           ssereg[8][16];        // SSE registers
    28.   ulong          mxcsr;                // SSE control and status register
    29.   int            selected;             // Reports selected register to plugin
    30.   ulong          drlin[4];             // Debug registers DR0..DR3
    31.   ulong          dr7;                  // Debug register DR7
    32. } t_reg_;