O ile mi wiadomo, szerokość typu bool
jest definiowana przez implementację. Ale czy istnieją jakieś boolowskie typy o stałej szerokości, czy też powinienem się trzymać, na przykład, uint8_t
, aby reprezentować bool o stałej szerokości?Czy istnieje typ bool o stałej szerokości w standardowym C++?
[EDIT] Zrobiłem ten skrypt Pythona, który automatycznie generuje klasę C++, która może przechowywać zmienne, które chcę przesłać między mikrokontrolerem a moim komputerem. Sposób działania polega na tym, że utrzymuje on również dwie tablice zawierające wskaźnik do każdej z tych zmiennych i rozmiar każdego z nich. Daje mi to niezbędne informacje, aby łatwo serializować i deserializować każdą z tych zmiennych. Aby to działało, rozmiar, endianness itp. Typów zmiennych muszą być jednakowe po obu stronach, ponieważ używam tego samego generowanego kodu po obu stronach. Nie wiem, czy to będzie jeszcze jakiś problem, ale nie sądzę, żeby tak było. Już wcześniej pracowałem z tym (32-bitowym układem ARM) i nie miałem problemów z wysyłaniem typów całkowitych i zmiennoprzecinkowych w przeszłości. Jednak minie kilka dni, zanim wrócę i mogę wypróbować booleans na chipie. Może to być później poważniejszy problem, ponieważ kod ten może zostać ponownie wykorzystany w innych procesorach później.
Moje pytanie brzmi. Czy istnieje typ stałej szerokości zdefiniowany w standardowych bibliotekach, czy powinienem użyć uint8_t do reprezentacji boolowskiej?
Typ 'bool' jest ustawiony na' true' i 'false'. W jaki sposób 2 stany mają różną szerokość? –
Czy mówisz o pakowaniu jednego lub więcej boolów w wersji integralnej? –
Czy odwołujesz się do rozmiaru w pamięci? Jeśli tak, to zależy od bool. W 99,9% zajmuje 1 bit, ponieważ reprezentuje on wartość true lub false, on lub off. Jednak pozostałe 7 są nadziewane, nie można ich użyć. Czy to dla ciebie odpowiedź? – Emz