[an error occurred while processing this directive]
[an error occurred while processing this directive]
Этот способ плох. (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive]
[an error occurred while processing this directive]
Компилятор не обязан помещать данные в структуре монолитно, более того он этого почти никогда не делает, а выполняет выравнивание.
На 16 и, тем более, 32bit чипе это решение работать не будет. На 8bit - вероятно будет.
Если переставить char в конец структуры, то почти наверняка выравнивание не выполниться, но не факт.
Наиболее правильным и красивым с точки зрения идеологии Си будет явное преобразование указателя в нужный тип (char * или unsigned char *).
Составить ответ
|||
Конференция
|||
Архив
Ответы
Если бы было так как вы говорите, то тип данных union был бы не нужен. Решение правильное, я бы поступил также. Да и на 16-битном CPU подобные фичи работают великолепно. — Fanta (09.04.2002 12:12, пустое )
:)) Одобрям-с! — BLACKEAGLE (08.04.2002 23:56, пустое )
Ответ: Внимательнее читайте документацию на компиляторы - 1) Всегда можно узнать, как именно будут размещены элементы, 2) Как правило, всегда есть прагмы, управляющие размещением в памяти. Если Вы не умеете настраивать инструмент, которым пользуетесь, лучше им не пользуйтесь. — trainer (08.04.2002 19:42, пустое )
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru