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

 
 
> Объявление структуры.
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
Ответов
theBMV
сообщение May 20 2010, 06:45
Сообщение #2


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

Группа: Свой
Сообщений: 131
Регистрация: 14-10-08
Из: г. Королев
Пользователь №: 40 940



Мне обычно помогает в хедере определить НОВЫЙ ТИП
Код
#pragma pack(1)
typedef struct S_имя
{
  бла;
  бла;
  бла;
} T_имя;
#pragma pack()

...и далее в коде
Код
T_имя имя_переменной;

т.е. без инициализации.

зюыю кст. работаю тоже в ИАРЕ 5ю40
Go to the top of the page
 
+Quote Post



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

 


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


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