Per quanto ho potuto trovare, la larghezza del tipo bool
è definita dall'implementazione. Ma ci sono tipi booleani a larghezza fissa, o dovrei attenermi, per esempio, a uint8_t
per rappresentare un bool a larghezza fissa?Esiste un tipo di bozza a larghezza fissa in C++ standard?
[EDIT] Ho creato questo script python che auto-genera una classe C++ che può contenere le variabili che voglio essere in grado di inviare tra un microcontroller e il mio computer. Il modo in cui funziona è che mantiene anche due array con un puntatore a ciascuna di queste variabili e la dimensione di ciascuna di esse. Questo mi dà le informazioni necessarie per serializzare e deserializzare facilmente ciascuna di queste variabili. Perché ciò avvenga, tuttavia, le dimensioni, l'endianità, ecc. Dei tipi di variabile devono essere le stesse su entrambi i lati poiché sto utilizzando lo stesso codice generato su entrambi i lati. Non so se questo sarà ancora un problema, ma non mi aspetto che lo sia. Ho già lavorato con questo chip (32 bit ARM) e non ho avuto problemi nell'invio di tipi interi e float in passato. Tuttavia ci vorranno alcuni giorni prima che io torni e possa provare i booleani sul chip. Questo potrebbe essere un problema più grande in seguito, dal momento che questo codice potrebbe essere riutilizzato su altri chip in seguito.
Quindi la mia domanda è. Esiste un tipo di larghezza fissa bool
definito nelle librerie standard o dovrei semplicemente usare un uint8_t per rappresentare il valore booleano?
Un tipo 'bool' è corretto su' true' e 'false'. Come possono 2 stati avere larghezza variabile? –
Stai parlando di impacchettare uno o più bool in un tipo integrale? –
Ti riferisci alle dimensioni nella memoria? Se è così è dipendente dal compilatore per il bool. Nel 99,9% occupa 1 bit poiché rappresenta true o false, on o off. Tuttavia, gli altri 7 sono imbottiti, non possono essere utilizzati. Ti è stata la risposta? – Emz