enum
и неявного преобразования указателей из void *
. bool
не был тайпдефом. bool
- это ключевое слово языка С++.bool
был бы тайпдефом, он был бы тайпдефом на какой-нибудь разумно выбранный целочисленный тип. Какового в общем случае было бы совершенно недостаточно для сохранения указателя без потерь. fwrite
- и вот вам готовый пример, который сериализует данные в том виде, в котором они лежат в памяти, т.е на little-endian платформе - в порядке от младших байтов к старшим.bool
и обратно по очевидным причинам будет приводить к потере информации и не позволит восстановить исходный указатель. std::unitptr_t
и обратно, то можно было бы ожидать сохранения значения указателя. Если бы мы приводили к другому указательному типу и обратно, то можно было бы ожидать сохранения значения указателя. А к bool
и обратно - никаких шансов. BootKeyboard.print(sim)
не получится. Этот как раз соответствует наблюдаемому вам поведению: посимвольная отладочная печать выглядит нормально, а печать результирующей строки выглядит "обрезанной".
rand()
стал "ненормальным"? И при чем здесь вообще ОС???