(Вопрос связан с моими предыдущими вопросами здесь , здесь , здесь и здесь ).
Я поддерживаю очень старое приложение, которое было перенесено несколько лет назад из DOS в Windows, но многие старые соглашения C до сих пор продолжают работать.
Одно конкретное соглашение - это макросы setBit и clrBit:
#ifndef setBit
#define setBit(word, mask) word |= mask
#endif
#ifndef clrBit
#define clrBit(word, mask) word &= ~mask
#endif
Я обнаружил, что могу объявить переменную как тип enum и установить мою переменную равной одному из определенных перечисленных значений.
enum SystemStatus
{
SYSTEM_ONLINE = BIT0,
SYSTEM_STATUS2 = BIT1,
SYSTEM_STATUS3 = BIT2,
SYSTEM_STATUS4 = BIT3
};
С BIT0 = 0x00000001
, BIT1 = 0x00000002
и т. Д.
SystemStatus systemStatus;
systemStatus = SYSTEM_ONLINE
По вашему мнению, макросы setBit и clrBit больше похожи на C или C ++ и было бы лучше просто объявить переменные как перечислимый тип и избавиться от всех старых вещей setBit / clrBit?