Цитата(zltigo @ Mar 20 2008, 18:45)

Не сочтите за труд, наконец прочитать ответ на Ваш вопрос и подумать над тем использовать-ли абсолютно не документированные и именно IAR-овские и конкретно не переносимые реализации паковки структрур, причем дополненнные абсолютно мутными крнстантами, либо использовать совершенно НЕ IAR-овский и имеющийся абсолютно у всех не 8-бит компиляторов механизм паковки структур.
Прочитал, подумал, проверил:
Код
#pragma pack(1)
struct First
{
char alpha;
DWORD beta;
};
struct First dataa;
dataa.alpha = 0;
dataa.beta = 0x2134;
на последние две строчки уходит около 18 команд (побайтная обработка).
если так
Код
//#pragma pack(1)
тогда 5 тактов.
А если сделать так:
#pragma pack(1)
struct First
{
DWORD beta;
char alpha;
};
Получились те же 5 тактов и sizeof(dataa) дает 5 байт.
Получается последний вариант самый лучший, и скорость таже и sizeof(работает). Вывод: в моем случае самому заботиться о выравнивании и использовать паковку.
Просмотрел ссылки, как эта
http://electronix.ru/forum/lofiversion/index.php/t30833.html и должен признать, этот вариант лучше. Паковка есть практически во всех компиляторах.
Сообщение отредактировал Vitaliy_ARM - Mar 20 2008, 16:41
Умные речи подобны строкам, напечатанным курсивом. К. Прутков