(Этот вопрос возник из-за того, что вчера кто-то объяснил детали CHAR_BIT, sizeof и endianness. Это совершенно гипотетично.)
Допустим, я на платформе, где CHAR_BIT равен 32, поэтому sizeof (char) == sizeof (short) == sizeof (int) == sizeof (long).Я считаю, что это все еще среда, соответствующая стандартам.
Обычный способ определения порядка байтов во время выполнения (, потому что нет надежного способа сделать это во время компиляции ), это сделать union { int i, char c[sizeof(int)] } x; x.i = 1
и посмотрите, установлены ли x.c[0]
или x.c[sizeof(int)-1]
.
Но это не работает на этой платформе, так как я получаю символ [1].
Есть лиспособ определить, является ли такая платформа с прямым порядком байтов или с прямым порядком байтов во время выполнения?Очевидно, это не имеет значения в этой гипотетической системе, но можно представить, что она записывает в файл или в какую-то область отображаемой памяти, которую другая машина считывает и восстанавливает в соответствии со своей (более разумной) моделью памяти.