ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
837771 Топик полностью
Ксения (04.05.2018 20:39, просмотров: 448) ответил lloyd на Простите за оффтоп
В прошлом уже была тема, где осуждалось применение самодельных типов вроде i8, u8, i16, u16, i32 и т.д. При этом большинство участников выражали мнение, что так делать нельзя, а надо строго придерживаться определений из stdint.h, кончающихся постфиксом _t. Тогда как лично мне краткие самодельные типы нравятся, причем, как своей краткостью, так самодельностью. Последняя дает возможность определить их из любой системы, как микрософтовской, так и из нативного C/C++. Проблемы бывают, когда типы не определены через #define, а являются в той или иной степени встроенными, из-за чего под C++ указатели на них оказываются неэквивалентными. Сама недавно столкнулась с тем, что в 64-разрядной версии OWLNEXT, все UINT стали писаться с маленькой буквы - unit, а прототипы функций с их участием к этой замене оказались чувствительными, поскольку объявлялись через template. Пришлось заменять одно на другое в очень многих местах, т.к. проект был велик. А заменить автоматом было нельзя из-за того, что в API-шных функциях UINT должен быть оставаться. Более того, микрософтовские определения типа BYTE и WORD - не их изобретение, а восходит к ассемблеру x86, откуда эти типы были взяты, когда еще маленькими буквами их писать было нельзя (на современных версиях уже можно). К embedded-программированию это тоже может иметь отношение. Скажем, всем известная система FatFS написана именно так, а обойтись без файловой системы нынче сложно, т.к. SDHC-карты и USB-флешки вставляются в каждую дырку :). И, наконец, в профессиональных библиотеках функций типа MKL типы тоже стараются использовать самодельные, например, MKL_INT или MKL_COMPLEX, именно с тем расчетом, чтобы их, в случае необходимости, можно было подменить на нативные. Их так и определяют: #ifndef MKL_INT #define MKL_INT __int32 #endif А с комплексными числами особенно, т.к. их обычно определяют в виде класса, которой в разных версиях языка выглядит различно.