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

 
 
> RealView Compiler не слушается квалификатора __packed, и вставляет padding byte...
sonycman
сообщение Jun 24 2009, 16:18
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Компилятор RealView 4.0.0.524 из пакета MDK3.70. C++.

Что-то не слушается меня компилер, то ли я не так пишу, то ли багу нашёл.
Исходник:
Код
#define USB_STRING_DESCRIPTOR_TYPE             3
#define    MANUF_STRING    L"Sonycman Production"
#define    PROD_STRING        L"Sonycman Mass Storage Drive"
#define    SERIAL_STRING    L"123456789ABC"

typedef __packed struct
{
    byte    length;
    byte    descriptor_type;
    word    languageID;
} USB_STRING_ID_DESCRIPTOR;

typedef __packed struct
{
    byte    length;
    byte    descriptor_type;
    wchar_t    text[sizeof(MANUF_STRING)/2];
} USB_STRING1_DESCRIPTOR;

typedef __packed struct
{
    byte    length;
    byte    descriptor_type;
    wchar_t    text[sizeof(PROD_STRING)/2];
} USB_STRING2_DESCRIPTOR;

typedef __packed struct
{
    byte    length;
    byte    descriptor_type;
    wchar_t    text[sizeof(SERIAL_STRING)/2];
} USB_STRING3_DESCRIPTOR;

typedef __packed struct
{
    USB_STRING_ID_DESCRIPTOR    s0;
    USB_STRING1_DESCRIPTOR        s1;
    USB_STRING2_DESCRIPTOR        s2;
    USB_STRING3_DESCRIPTOR        s3;
} USB_STRING_DESCRIPTOR;

и инициализация:
Код
const    USB_STRING_DESCRIPTOR    CUSB::strings = {
    sizeof(USB_STRING_ID_DESCRIPTOR),
    USB_STRING_DESCRIPTOR_TYPE,
    0x409,                                //language ID
    sizeof(USB_STRING1_DESCRIPTOR),
    USB_STRING_DESCRIPTOR_TYPE,
    MANUF_STRING,
    sizeof(USB_STRING2_DESCRIPTOR),
    USB_STRING_DESCRIPTOR_TYPE,
    PROD_STRING,
    sizeof(USB_STRING3_DESCRIPTOR),
    USB_STRING_DESCRIPTOR_TYPE,
    SERIAL_STRING
};


Так вот, члену strings присваиваются такие данные:
0x080046f9: 04 03 09 04 2a 03 00 53 00 6f 00 6e 00...
Но откуда взялся в запакованной структуре явно пэддинг байт (выделен жирным)?!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sonycman   RealView Compiler не слушается квалификатора __packed   Jun 24 2009, 16:18
- - forever failure   wchar_t text[sizeof(MANUF_STRING)/2]; /*<-- ...   Jun 24 2009, 16:41
- - zltigo   А попробуйте простую кондовую #pragma pack(1) вме...   Jun 24 2009, 16:43
|- - sonycman   Цитата(forever failure @ Jun 24 2009, 20...   Jun 24 2009, 16:47
|- - zltigo   Цитата(sonycman @ Jun 24 2009, 19:47) А э...   Jun 24 2009, 17:14
- - defunct   Цитата(sonycman @ Jun 24 2009, 19:18) 0x0...   Jun 24 2009, 18:09
|- - aaarrr   Цитата(defunct @ Jun 24 2009, 22:09) Отту...   Jun 24 2009, 18:18
|- - sonycman   Цитата(defunct @ Jun 24 2009, 22:09) Отту...   Jun 24 2009, 18:21
|- - defunct   Цитата(sonycman @ Jun 24 2009, 21:21) Нол...   Jun 24 2009, 18:26
|- - defunct   Цитата(sonycman @ Jun 24 2009, 21:21) Нол...   Jun 24 2009, 18:31
|- - aaarrr   Цитата(defunct @ Jun 24 2009, 22:31) Ну т...   Jun 24 2009, 18:32
|- - defunct   Цитата(aaarrr @ Jun 24 2009, 21:32) Напиш...   Jun 24 2009, 18:34
- - aaarrr   sonycman: а данные структуры где смотрите? Цитата...   Jun 24 2009, 18:28
|- - sonycman   Цитата(defunct @ Jun 24 2009, 22:26) може...   Jun 24 2009, 20:42
|- - defunct   Цитата(sonycman @ Jun 24 2009, 23:42) Вес...   Jun 24 2009, 20:53
- - aaarrr   Цитата(sonycman @ Jun 24 2009, 20:18) Ком...   Jun 24 2009, 18:42
- - sonycman   Пока что попробовал новый проект в простом Си - вс...   Jun 24 2009, 20:59
- - aaarrr   Цитата(sonycman @ Jun 25 2009, 00:59) Есл...   Jun 24 2009, 21:17


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

 


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


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