suggerisco che se il vostro compilatore supporta utilizzare i tipi di intestazione C99<stdint.h>
come uint8_t
e int8_t
.
Se il compilatore non lo supporta, crearne uno. Here's un esempio per VC++, le cui versioni precedenti non hanno stdint.h
. GCC supporta stdint.h
, e in effetti la maggior parte delle C99
Un problema con il tuo suggerimento è che il segno di char
è implementazione definita, quindi se si fa creare un tipo alias. dovresti almeno essere esplicito riguardo al segno. C'è un merito nell'idea poiché in C# ad esempio uno char
è 16 bit. Ma ha anche un tipo di byte.
Nota aggiuntiva ...
Non c'era alcun problema con il suggerimento, si fece infatti specificare non firmato.
Vorrei anche suggerire che il semplice char
viene utilizzato se i dati sono in realtà dati di carattere, cioè una rappresentazione di testo normale come si potrebbe visualizzare su una console.Ciò presenterà un minor numero di problemi di tipo quando si utilizzano librerie standard e di terze parti. Se d'altro canto i dati rappresentano un'entità non carattere come una bitmap, o se si tratta di dati numerici di "intero piccolo" su cui è possibile eseguire la manipolazione aritmetica, o dati su cui si eseguiranno operazioni logiche, allora uno dei È necessario utilizzare i tipi stdint.h
(o anche un tipo definito da uno di essi).
ho recentemente ha catturato su un TI C54xx compilatore dove char
è infatti a 16 bit, in modo che è il motivo per cui utilizzando stdint.h ove possibile, anche se lo si utilizza per poi definire un tipo byte
è preferibile supponendo che unsigned char
sia un alias adatto.
Non sono davvero venduto per richiedere un'intestazione di boost solo per typedef. –
Si noti che mentre stdint.h è definito da C99, non esiste lo standard richiesto dallo standard ISO C++ corrente (perché precede C99), quindi in alcuni compilatori è possibile utilizzare la convenzione C per i nomi di intestazione è utilizzare stdint tipi, e quella sarebbe la forma più portabile. –
Clifford