Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Ответ: Тогда я совсем ничего не понимаю в жизни.
Отправлено
Artem-1.6E-19
21 августа 2009, г. 11:38
В ответ на:
может быть но не обязан - может выравнивая то и не произошло ?
отправлено пользователем
DASM
21 августа 2009, г. 11:34
typedef struct
{
unsigned char a1;
unsigned char a2;
unsigned char a3;
unsigned char a4;
} __attribute__ ((packed)) s1;
typedef struct
{
unsigned char a1;
unsigned char a2;
unsigned char a3;
unsigned char a4;
} s2;
void main(void)
{
printf("%u %u \n", sizeof(s1),sizeof(s2));
}
выдает 4 4. Линух, x86_64.
Составить ответ
|
Вернуться на конференцию.
Ответы
Так ведь обе структуры выровненные. char'ы выравниваются на границу байта.
-
vmp
(21.08.2009, 11:45:24
10.0.1.100,87.245.155.198
,
пустое
)
Все. Получилось. Спасибо.
-
Artem-1.6E-19
(21.08.2009, 11:48:8
127.0.0.1,77.87.39.155
,
пустое
)
гм, а зачем ему это паковать ? Проц хазватит это одни словом в свой регистр и будет уже регистр кромсать. Попробуй кстати 9 char - оф, хотя не уверен что изменится что-то.
-
DASM
(21.08.2009, 11:41:42
203.185.50.220
,
пустое
)
А если я хочу третий инкрементировать? Вообще он по идее должен это по границе слова бить.
-
Artem-1.6E-19
(21.08.2009, 11:46:49
127.0.0.1,77.87.39.155
, 59 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите двойку на единицу:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru