ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 апреля
304162 Топик полностью
fk0, легенда (02.02.2012 23:29, просмотров: 261) ответил abivan на Предложенный вариант реализован для себя, поэтому и не выкладывется "официально".
Я против byte и word по следующим причинам: во-первых не стоит насильно задавать byte, об этом уже вовсю в популярных журналах пишется, иногда word быстрей. А иногда нет (8-битный контроллер скорей). Потом, byte == char, то не очевидно какая у него знаковость и можно иметь очень качественно подложенные грабли. И я против излишней беззнаковости, ибо легко нарваться на переполнение в естесственных для человека алгебраических выражениях (a>=c+b --> a-b>=c при а==0, например). Против word тоже имею что: опять же не очевиден конкретный тип, опять же беззнаковость. Для unsigned, например, очевидно, что это от 0 до UINT_MAX. А для WORD? Негативные следствия хорошо видны для чисто 32-битных программ при попытке перенести на 16 или 8 бит (где unsigned 16-битный и ничего не работает -- потому, что если надо миллионы считать, то следует писать long и не морочить мозг). Потом тип WORD может быть интересен в связке с указателями. Будет ли он эквиэвалентом (u)intptr_t или нет? Очень сложно сказать во-первых из-за разрядности, во-вторых из-за извращений вроде far pointers на отдельных платформах (в понимании последнего очень хорошо помогает практика программирования под DOS...) Даже если в WORD никто не будет как есть засовывать указатель, туда могут поместить длину или смещение (разность указателей) -- это запросто. Только size_t существует тоже в связке с указателями же, ибо ситуация когда sizeof(unsigned)==2, например, а sizeof(size_t)==4 вполне возможна. Она даже на PIC18 (large memory model) возмжна... Короче говоря, моё мнение -- нужно использовать максимально стандартные типы и <stdint.h> если их не хватает. В языке C очень хорошие грабли поразложены в разных местах и стандарты это далеко не просто так. Программа написанная по-стандарту часто просто сходу работает, а написанная (опять же пример -- 90% программ под *nix с 32-битным unsigned и int) кое-как обычно выправлению не подлежит, очень тяжко...
[ZX]