[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