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

 
 
> Выравнивание при доступе к полям структур в Code Composer Studio v. 3.3
rifch
сообщение Sep 4 2007, 12:47
Сообщение #1


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

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



Имеется следующий код на C++ для 6000-ков, который считывает некоторую структуру из бинарного файла. После загрузки данных при доступе к полям структуры выясняется, что они выравниваются на 4 байта.
Код
typedef unsigned short WORD; //16-bit
typedef unsigned int DWORD; //32-bit

//The BITMAPFILEHEADER structure contains information about the type, size, and layout of a file that contains a DIB.
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;

BITMAPFILEHEADER bmfh;

int O1=(char*)&bmfh.bfType-(char*)&bmfh;
int O2=(char*)&bmfh.bfSize-(char*)&bmfh;
int O3=sizeof(bmfh.bfType);
int O4=sizeof(WORD);
int O5=sizeof(BITMAPFILEHEADER);
int O6=sizeof(bmfh);

Значения смещений будут следующими:
O1==0
O2==4
O3==2
O4==2
O5==16
O6==16
По идее значение O2 должно быть равным 2, а O5 и O6 равными 14. Как сделать, чтобы выравнивание при доступе к элементам структуры было правильным?
Пробовал через команду препроцессора STRUCT_ALIGN например следующим образом:
Код
#pragma STRUCT_ALIGN(128);
typedef struct st_tag
{
int a;
short b;
} st_typedef;

но компилятор выдаёт предупреждение warning: unrecognized #pragma. Как быть в этой ситуации?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bukvy
сообщение Mar 13 2008, 08:36
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 8-09-07
Пользователь №: 30 379



Вот ответ от службы поддержки TI от 13 марта 2008 г.

"...Well, yes, what you have reported to us is correct. In fact there is a problem with the Struct_Align pragma. This is actually a CCS bug and has already been reported to the concerned developers. In fact there are bugs that have been filed for this.
The bug number is SDSCM00008809. This is being worked upon by the developers and we hope to get this rectified as soon as possible. That is the latest update that I can give for the moment."

Так что, они об этой проблеме знают и стараются ее решить. Как скоро - неизвестно. Нам остается только ждать.
Go to the top of the page
 
+Quote Post



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

 


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


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