Если вы хотите использовать Qt, вы должны принять quint8
, quint16
и так далее.Почему все typedef над стандартными типами C?
Если вы хотите использовать GLib, вы должны приветствовать guint8
, guint16
и так далее.
На Linux есть u32
, s16
и так далее.
UC/OS определяет SINT32
, UINT16
и так далее.
И если вам нужно использовать какую-то комбинацию этих вещей, вам лучше подготовиться к неприятностям. Потому что на вашей машине u32
будет typedef
d над long
и quint32
будет typedef
d над int
и компилятор пожалуется.
Почему все это делают, если есть <stdint.h>
? Это какая-то традиция для библиотек?
Для меня вопрос больше не «почему бы им просто не использовать« stdint.h'? », А скорее, было бы, почему кто-нибудь, например. используйте 'UINT16' или' quint16' вместо простого 'unsigned short' в первую очередь? On *, какой именно компилятор точно сделал бы это, провалили бы их? – Mehrdad
@Mehrdad в программировании микроконтроллеров вы можете иметь всевозможные вещи. Например, на AVR Mega (и, следовательно, на знаменитом Arduino) int 16 бит. Это может быть неприятный сюрприз. На мой взгляд, «unsigned short» требует больше усилий для набора текста. И мне всегда было грустно использовать «unsigned char» для
байтоктет. Беззнаковый персонаж, правда? – AmomumДа, я знаю об этом, но я говорил о «коротком», а не «int». Знаете ли вы о какой-либо платформе, на которой 'short' не будет работать, но' s8' и 's16' оба будут? Я знаю, что это вполне возможно в теории, но я почти уверен, что большинство библиотек, в которых я вижу типизированные методы, никогда не будут нацелены на такие платформы. – Mehrdad