[P&AM Lab] Пример для разбора исходного кода - cat(1) из BSD 4.2
Grigoriy A. Sitkarev
sitkarev на komitex.ru
Чт Дек 9 22:52:45 MSK 2010
Егор, ты наверное хотел сказать так:
#define FLAG1 0x0001
#define FLAG2 0x0002
Всё же есть традиция что имена начинающиеся с большой буквы это макросы.
Хотя, опять же, алгоритмически ты прав.
Часто в современной литературе рекомендуют использовать для битовых
полей перечисления, вот там больше похоже на то как у тебя:
enum {
FLAG1 = 1 << 0,
FLAG2 = 1 << 1
};
Что выбрать на самом деле конечно дело вкуса.
--
Г.А.
jam пишет:
> Время выполнения разбора опций очень маленькое, так что вряд ли это
> оптимизация, скорее удобная запись.
> (можно было и побитовыми операциями
>
> unsigned int flags, FLAG1, FLAG2;
> flags = 0;
> FLAG1 = 1 << 0;//000...1
> FLAG2 = 1 << 1;//00...10
>
> flags |= FLAG1;//включение опции
> flags |= FLAG2;
> flags &= ~FLAG2; //выключение опции
>
> if (flags & FLAG1) {
> ..
> }
> if (flags & FLAG2) {
> ...
> }
> )
>
Подробная информация о списке рассылки Lab