Как убрать warning или использование union

Обсуждаем контроллеры компании Atmel.
Ответить
ESWANT
Встал на лапы
Сообщения: 98
Зарегистрирован: Пн дек 06, 2010 12:26:45

Как убрать warning или использование union

Сообщение ESWANT »

Здравствуйте, помогите как правильно проинициализировать такую структуру
в WinAVR

Код: Выделить всё

typedef  struct { 
  unsigned char a;
  unsigned char b;
  }Ta;

typedef union 
        {     
        Ta k;
        unsigned char v[2];
        }Tb;

EEMEM Tb x[3]={
 {'A',1}, 
 {'A',5},
 {0}           }; 

warning: missing braces around initializer
warning: (near initialization for 'x[0].k')
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Как убрать warning или использование union

Сообщение ARV »

при инциализации используйте имена полей, которые вы инициализируете:

Код: Выделить всё

Ta var = {.a = 15, .b=25};
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
ESWANT
Встал на лапы
Сообщения: 98
Зарегистрирован: Пн дек 06, 2010 12:26:45

Re: Как убрать warning или использование union

Сообщение ESWANT »

ARV писал(а):при инциализации используйте имена полей, которые вы инициализируете:

Код: Выделить всё

Ta var = {.a = 15, .b=25};
А как еще можно? покороче запись бы...
И хотелось бы имя Tb упомянуть...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Как убрать warning или использование union

Сообщение ARV »

да какая разница, какой тип? если у вас сложный тип, указание конкретного имени поля в инициализаторе избавит вас от варнингов и даст требуемый результат. других вариантов у меня для вас нет.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
ESWANT
Встал на лапы
Сообщения: 98
Зарегистрирован: Пн дек 06, 2010 12:26:45

Re: Как убрать warning или использование union

Сообщение ESWANT »

ARV писал(а):да какая разница, какой тип? если у вас сложный тип, указание конкретного имени поля в инициализаторе избавит вас от варнингов и даст требуемый результат. других вариантов у меня для вас нет.
Спасибо
Реклама
ESWANT
Встал на лапы
Сообщения: 98
Зарегистрирован: Пн дек 06, 2010 12:26:45

как избавиться от такого warnin-га

Сообщение ESWANT »

Здравствуйте, подскажите как избавиться от такого предупреждения WinAVR

Код: Выделить всё

PORTC SET_BIT(i + 4);
warning: suggest parentheses around + or - inside shift
(SET_BIT это макрос-широкоизвестный)
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: как избавиться от такого warnin-га

Сообщение ARV »

не пользуйтесь широкоизвестными макросами, пишите все ручками, пока не научитесь.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
ESWANT
Встал на лапы
Сообщения: 98
Зарегистрирован: Пн дек 06, 2010 12:26:45

Re: как избавиться от такого warnin-га

Сообщение ESWANT »

ARV писал(а):не пользуйтесь широкоизвестными макросами, пишите все ручками, пока не научитесь.
не знаю как у Вас но если очень много писать ручками
то большое количество знаков | ~%&++||<< и т.п. в коде
затуманивают смысл всего написанного и большую часть мощности мозга тратишь на обратное преобразование кода
в термины той предметной области, функционал которой был ранее закодирован :)

компилятор же должен привести в такой вид и не писать предупреждения - почему он этого не делает?
PORTC |= (1<<(i + 4));

Я конечно не поленюсь и напишу так но всё равно непонятно
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Как убрать warning или использование union

Сообщение ARV »

ESWANT писал(а):почему он этого не делает?
чтобы это понять, надо посмотреть, как устроен "общеизвестный макрос", который, например, мне не известен абсолютно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Как убрать warning или использование union

Сообщение Аlex »

5 секунд и ответ найден - https://translate.google.ru/#en/ru/sugg ... de%20shift
Неужели это так сложно сделать, прежде чем задать вопрос ? :facepalm:
Ответить

Вернуться в «AVR»