Здравствуйте, plastictown, Вы писали:
P>typedef char char_t;
Это-то зачем?
P>typedef signed char int8_t; P>typedef signed short int16_t; P>typedef signed int int32_t; P>typedef signed long int64_t; P>typedef unsigned char uint8_t; P>typedef unsigned short uint16_t; P>typedef unsigned int uint32_t; P>typedef unsigned long uint64_t;
Могут быть конфликты со стандартным stdint.h. Я обычно делаю хидер, который под #ifdef'ом либо включает стандартный stdint.h, там, где он есть, либо, для остальных платформ, сам определяет растущие из него типы.
P>typedef float float32_t; P>typedef double float64_t; P>typedef long double float128_t;
Лично для меня, по моему опыту, использование плавучки в промышленном коде — большая редкость. А если уж за каким-то ляхом в кросплатформенной программе понадобилась плавучка, сразу возникают вопросы о ее кроссплатформенном внешнем представлении.
Что до внутреннего представления, в среднем можно всюду использовать double, и не парить себе моск.
Здравствуйте, plastictown, Вы писали:
P>typedef signed long int64_t;
Говорите, кроссплатформенный? В Windows даже 64-битной long это 32 бита.
Так что тут хотя бы long long. И вообще, местный <stdint.h> как-то полезнее заката солнца вручную.
P>typedef long double float128_t;
Не знаю такой платформы. В лучшем случае long double будет 80 бит, а может и 64.
P>А также явного приведения типов через static_cast в случаях, где в этом нет особой необходимости.
Доброго времени суток! Стоит задача разработать соглашение о кодировании для языка C++. В качестве основыя взял MISRA, принципе, особых проблем не возникло, без особых зверств получилось 83 пункта. Есть два вопроса. В контексте того, что софт кроссплатформенный, а работа в основном с железом, насколько принципиально использование типов данных:
typedef char char_t;
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef signed long int64_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long uint64_t;
typedef float float32_t;
typedef double float64_t;
typedef long double float128_t;
А также явного приведения типов через static_cast в случаях, где в этом нет особой необходимости.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, plastictown, Вы писали:
P>>typedef char char_t;
Pzz>Это-то зачем?
Это цитата из MISRA C++. Плюс к тому:
The ISO (POSIX) typedefs as shown below are recommended and are used for all basic numerical
and character types in this document. For a 32-bit integer machine, these are as follows:
Я так ни разу и не слышал разумного объяснения всей этой порнографии с подобными typedef'ами.
Все почему-то сразу начинают говорить про некое мифическое железо, хотя на самом деле все рябота с железом один хрен выльется в маски\сдвиги и системные ф-и записи в регистры этого самого железа. ЧСХ, у этих самых системных ф-й есть свои тайпдефы и тогда происходит цирк вида — кастим yet_another_ int32_t to some_system_int32_t, либо "да ну его нафиг, все равно наш cool_unsigned_int32_t — это тоже что и ихний DWORD".