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

 
 
> Keil для ARM и выравнивание в структурах
kosyak©
сообщение Sep 3 2009, 09:37
Сообщение #1


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

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



есть объявление структуры
Код
...
typedef __packed struct    
{
    BYTE Signature:7;
    BYTE Answer:1;                              
    BYTE Owner;                                 
    BYTE Command;            
    BYTE Error;                                  
    BYTE PacketID;
    WORD PacketSize;
} TPackHead;
...

и далее в коде
Код
...
    if( RECV_SIZE == sizeof(TPackHead) )
    {
        if( ((TPackHead*)USART_BUF)->Answer == 0 )
       {
...

Такая конструкция используетсяв 2-х проектах:
В одном проекте sizeof(TPackHead) == 7 (что есть правильно)
В другом sizeof(TPackHead) == 9 (о_О).
Я так понимаю что это компилятор насовал в структуру доп. элементы для выравнивания,
но вроде как деректива __packed при объявлении должна запретить ему такую самодеятельность...
Как заставить компилятор не выравнивать члены структур?!?!?!
Компилятор RealView MDL 3.24.

Всем спасибо вопрос снят!
Оказыватся WORD был объявлен как
Код
typedef unsigned int  WORD;

эт все перекочевало с 8 битной платформы...второй раз уже втыкаюсь cranky.gif

Сообщение отредактировал kosyak© - Sep 3 2009, 09:50
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 05:16
Рейтинг@Mail.ru


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