[P&AM Lab] Пример для разбора исходного кода - cat(1) из BSD 4.2

jam rg-400 на list.ru
Чт Дек 9 22:33:15 MSK 2010


Время выполнения разбора опций очень маленькое, так что вряд ли это
оптимизация, скорее удобная запись.
(можно было и побитовыми операциями
	
	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) {
	...	
	}
)

В Чтв, 09/12/2010 в 20:36 +0300, Борис Липин пишет:
> Тут парочка вопросов возникла по поводу cat
> 1) 
> switch(argv[1][1]) {
>             case 0:
>                 break;
>             case 'u':
>                 setbuf(stdout, (char *)NULL);
>                 uflg++;
>                 continue;
>             case 'n':
>                 nflg++;
>                 continue;
> ...}
> Почему здесь мы для флагов используем ++ а не просто приравниваем флаг
> к 1( uflg=1); Связанно ли это както с тем что операция инкремента в
> ассемблере занимает меньше памяти чем mov?
> 2)
> Что содержится в поле st_ino структуры struct stat statb,всмысле какой
> у неё логический смысл, и зачем мы её вводили в программу?
> 3)
> stdout-ссылка на стандартный файл вывода.А на что именно он ссылается?
> 
> Заранее спасибо:)
> _______________________________________________
> Lab mailing list
> Lab на wiki.syktsu.ru
> http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/lab






Подробная информация о списке рассылки Lab