Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: GCC и endian при обращении к данным
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Hexxx
Портирую код с винды на AVR32. AVR32 - big endian (gcc), виндовый код - little endian(VS). Проблемы началась изза того, что виндовый код кишит наложением структур на данные. Т.е. получили массив данны, привели его к указателю на структуру, и пользуемся полями структуры. Данные в массиве тоже little endian, поэтому на винде все красиво работает через приведение к типу.
А если я AVR32 приведу little endian данные к указателю на структуру, компилятор будет считать, что там в структуре big endian данные и наступит хаос.
Есть ли какая-то возможность указать GCC endian для данных?
Сергей Борщ
Цитата(Hexxx @ Sep 10 2008, 12:51) *
Есть ли какая-то возможность указать GCC endian для данных?
нет. Есть только макросы ntohs() и htons().
Hexxx
Цитата(Сергей Борщ @ Sep 10 2008, 12:56) *
нет. Есть только макросы ntohs() и htons().

http://gcc.gnu.org/ml/gcc/2004-07/msg01100.html а ведь была идея. Но... sad.gif
Сергей Борщ
Цитата(Hexxx @ Sep 10 2008, 13:46) *
а ведь была идея. Но... sad.gif
Это прекрасный шанс для вас. Реализуйте. И свою задачу решите, и людям пригодится wink.gif
Непомнящий Евгений
А не проще перед приведением к типу указателя добавить вызов функции, инвертирующей порядок байт?
amw
Цитата(Непомнящий Евгений @ Sep 11 2008, 07:09) *
А не проще перед приведением к типу указателя добавить вызов функции, инвертирующей порядок байт?

Это проще только если в структуре все поля одинакового размера.
А если поля разного размера, то это даже сложнее чем присвоение каждого поля с переварачиванием.

2 author
Такой функциональности, на сколько я знаю, нет ни в одном компиляторе.
Непомнящий Евгений
Цитата(amw @ Sep 11 2008, 16:47) *
Это проще только если в структуре все поля одинакового размера.
А если поля разного размера, то это даже сложнее чем присвоение каждого поля с переварачиванием.


вы правы, не сообразил. Придется писать свой преобразователь для каждого типа...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.