zuuuuk 0 Posted April 15, 2015 · Report post Доброе утро. У меня есть arm LPC2106. Я новичок. Подскажите как выровнять структуры по 1 байту. struct as { char tm; int tmp; } Quote Ответить с цитированием Share this post Link to post Share on other sites
esaulenka 0 Posted April 15, 2015 · Report post А компилятор есть? :-) Какой? гулить pragma pack attribute aligned, packed Quote Ответить с цитированием Share this post Link to post Share on other sites
Antonov 0 Posted April 15, 2015 · Report post В keil я делаю так: #pragma pack(push, 1) struct as { char tm; int tmp; } #pragma pack(pop) Quote Ответить с цитированием Share this post Link to post Share on other sites
zuuuuk 0 Posted April 15, 2015 · Report post компилятор WinARM Quote Ответить с цитированием Share this post Link to post Share on other sites
dimka76 0 Posted April 15, 2015 · Report post WinARM это GCC, следовательно например вот так typedef struct { char tm; int tmp; }__attribute__ ((packed)) _t_as_; _t_as_ as; Quote Ответить с цитированием Share this post Link to post Share on other sites
Александр С 0 Posted April 15, 2015 · Report post Еще можно так : #pragma pack(push, 1) struct S { unsigned char a; void *p; unsigned char b; } #pragma pack(pop) Это даёт транслятору команду запомнить текущие параметры упаковки и и переопределить на побайтную, а после, восстановить что были до того. Quote Ответить с цитированием Share this post Link to post Share on other sites
Сергей Борщ 0 Posted April 15, 2015 · Report post Еще можно так :WinARM это настолько древний gcc, что не знал еще такой прагмы и молча игнорировал ее. Появилась она совсем недавно. А автору вопроса можно заодно посоветовать заменить компилятор из WinARM на более современную версию. Quote Ответить с цитированием Share this post Link to post Share on other sites
dimka76 0 Posted April 15, 2015 · Report post WinARM это настолько древний gcc, что не знал еще такой прагмы и молча игнорировал ее. Появилась она совсем недавно. А автору вопроса можно заодно посоветовать заменить компилятор из WinARM на более современную версию. Launchpad потдерживает только Cortex. Quote Ответить с цитированием Share this post Link to post Share on other sites
Сергей Борщ 0 Posted April 15, 2015 · Report post Launchpad потдерживает только Cortex.Правда? Я, пока вы не сказали, его и для Cortex и для ARM7TDMI использовал. И программы работают. Quote Ответить с цитированием Share this post Link to post Share on other sites
dimka76 0 Posted April 15, 2015 · Report post Правда? Я, пока вы не сказали, его и для Cortex и для ARM7TDMI использовал. И программы работают. Наверное я не правильно понял содержимое следующего топика https://answers.launchpad.net/gcc-arm-embed...question/193998 Quote Ответить с цитированием Share this post Link to post Share on other sites