[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