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

 
 
> Объявление структуры.
SasaVitebsk
сообщение May 3 2010, 19:22
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Столкнулся с интересной вещью. С чем-то подобным уже сталкивался, но в явном виде пока не встречал.

Компилятор IAR ARM 5.40.
Объявляю структуру. Мне надо чтобы структура была определённого размера, так как далее я работаю с указателеми и смещениями. Поэтому в конец я добавляю некоторые неиспользуемые поля. Структуру инициализирую.

==========
Если инициализировать структуру не полностью (то есть не все поля), то компилятор игнорирует поля, которые неинициализированы. При этом значение sizeof выдаётся по фактическому значению размера структуры. Ни ошибки, ни предупреждения компилятор при этом не выдаёт.

Вот не совсем понятно. Представим, что я просто ошибся и не проинициализировал последний элемент структуры и к нему нет прямого обращения .... и вот - нет ошибки, а компилятор этот элемент просто выкинет.
Где это описано? Как то в явном виде не встречал.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение May 20 2010, 07:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Да я не делаю упаковку. Мы как-бы в железе работаем. То есть процессор не поменяется на ходу. А эффективност явно будет выше при структуре, выравненной как положено. При передаче структуры от устройства к устройству, её просто можно выравнять под свою архитектуру. Законы выравнивания - заранее известны.

Ошибка была простая - моя. Я в головном файле объявлял структуру одним образом, а при объявлении структуры extended объявлял другим. smile.gif
Всё от лености ква-ква. Когда находишь такие ошибки, то вносишь коренные изменения. Теперь объявил новый тип в файле объявлений.
Go to the top of the page
 
+Quote Post



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

 


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


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