Jeśli chcesz używać Qt, musisz objąć quint8
, quint16
i tak dalej.Dlaczego wszyscy wpisują się w typowe typy C?
Jeśli chcesz użyć GLib, trzeba powitać guint8
, guint16
i tak dalej.
Na Linux są u32
, s16
i tak dalej.
uC/OS definiuje SINT32
, UINT16
i tak dalej.
A jeśli musisz użyć jakiejś kombinacji tych rzeczy, lepiej przygotuj się na kłopoty. Ponieważ na komputerze użytkownika u32
będzie typedef
d przez long
i quint32
będzie typedef
d przez int
, a kompilator złoży skargę na.
Dlaczego każdy to robi, jeśli jest <stdint.h>
? Czy jest to jakaś tradycja dla bibliotek?
Dla mnie ważniejsze pytanie nie brzmi "dlaczego po prostu nie używają' stdint.h'? ", Ale raczej byłoby, dlaczego ktokolwiek np. używaj 'UINT16' lub' quint16' zamiast po prostu zwykłego 'unsigned short' w pierwszej kolejności? Na * który dokładnie kompilator * może to spowodować, że je zawiedzie? – Mehrdad
@Mehrdad w programowaniu mikrokontrolerów możesz mieć wiele różnych rzeczy. Na AVR Mega na przykład (i konsekwentnie na słynnej Arduino) int jest 16 bitowe. To może być paskudna niespodzianka. Moim zdaniem "niepodpisany krótki" wymaga więcej wysiłku pisania. I zawsze mnie to zasmuciło używając "unsigned char" dla oktetu
bajt. Niepodpisana postać, naprawdę? – AmomumTak, jestem tego świadomy, ale mówiłem o 'short', a nie' int'. Czy znasz platformę, na której 'short' nie działałby, ale' S8' i 'S16' oba? Wiem, że to całkiem możliwe w teorii, ale jestem prawie pewien, że większość bibliotek, w których widzę takie typy, nigdy nie byłaby celem takich platform. – Mehrdad