маска в enum [C ++] - PullRequest
       33

маска в enum [C ++]

1 голос
/ 05 декабря 2009

Я сейчас играю с битами, искал код Microsoft для состояний io и обнаружил что-то вроде этого:

enum _Iostate
    {   // constants for stream states
    _Statmask = 0x17};//What is this mask for???

static const _Iostate goodbit = (_Iostate)0x0;
static const _Iostate eofbit = (_Iostate)0x1;
static const _Iostate failbit = (_Iostate)0x2;
static const _Iostate badbit = (_Iostate)0x4;
static const _Iostate _Hardfail = (_Iostate)0x10;

Мне просто интересно, для чего эта маска, потому что код работает без этой маски, а значения остались такими же, как и без этой маски. Спасибо.

Ответы [ 2 ]

7 голосов
/ 05 декабря 2009

Он гарантирует, что перечисление _Iostate имеет правильный размер для хранения всех битовых констант, определенных после, и их комбинаций.

3 голосов
/ 05 декабря 2009

Это побитовое ИЛИ всех возможных флагов. Возможно, вы могли бы использовать его для извлечения части, содержащей флаги, из других битов целого числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...