ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
25 марта
1503951 Топик полностью
VladislavS. (06.03.2025 17:08, просмотров: 116) ответил ЫЫyкпy на Нашел о чем беспокоиться. :)) Раскладка битов и байтов в структурах стандартами С/С++ не определена и отдается на откуп компилятору. Одного этого достаточно чтобы не мечтать о переносимости, анонимные члены и union на это уже не влияют. Но для конкретного компилятора эта раскладка известна, её можно описать, и пусть те, кому не повезло занимаются преобразованием к удобному для них виду. В Модбасе и IP/TCP так сделали и ничего, никто не жалуется :))
Индейцев в современных языках легко определить на этапе компиляции. Остальное стандартом определено. 

Так

if constexpr (std::endian::native == std::endian::big)
{
  //"big-endian"
}
else if constexpr (std::endian::native == std::endian::little)
{
  //"little-endian"
}
else
{
  //"mixed-endian"
}

Или так

#if BYTE_ORDER == BIG_ENDIAN
  //"big-endian"
#else
  //"little-endian"
#endif