реклама на сайте
подробности

 
 
> А кто ткнет в наиболее правильный способ, борьбы с индианностью в С
Evgeny_CD
сообщение Jul 11 2005, 12:55
Сообщение #1


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Пишется код. Он будет идти на разных платформах/компилерах. Почти наверняка будет разная endian: младший байт вначале (прямой порядок, Little Endian) или старший байт в начале (обратный порядок, Big Endian).

Соотвественно, если к какой-то переменной обращаются не только как, например, int (он тоже разный на разных платформах), но и как к массиву из 2 или 4 байтов, то это вызовет очень веселые глюки.

Кстати, а с 32 битами приколов разной индианности не бывает (когда для dword и word раные endian)?

Какой наиболее правильный способ борьбы с этим?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zig
сообщение Jul 18 2005, 14:10
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 30-12-04
Пользователь №: 1 761



Можно ещё попробовать вот такую функцию:

Код
/*
Вычисление endian'ности в реальном времени

Должно возвращать 1: Intel (little endian), 0: Power PC (big endian)
*/
int is_little_endian( void )
{
   union Test
   {
       int i;
       char b[sizeof(int)];
   };

   static const Test test = { 1 };

   return test.b[0];
}
Go to the top of the page
 
+Quote Post
acex2
сообщение Jul 18 2005, 15:57
Сообщение #3


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(Zig @ Jul 18 2005, 11:10)
Можно ещё попробовать вот такую функцию:
Вычисление endian'ности в реальном времени
Должно возвращать 1: Intel (little endian), 0: Power PC (big endian)

skipped


А смысл такой функции кроме академического интереса? Бинарный код все равно придется перекомпилировать под конкретный процессор.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 12:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01425 секунд с 7
ELECTRONIX ©2004-2016