Страница 1 из 1
Как убрать warning или использование union
Добавлено: Чт авг 25, 2016 07:59:35
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')
Re: Как убрать warning или использование union
Добавлено: Чт авг 25, 2016 08:25:37
ARV
при инциализации используйте имена полей, которые вы инициализируете:
Re: Как убрать warning или использование union
Добавлено: Чт авг 25, 2016 08:38:44
ESWANT
ARV писал(а):при инциализации используйте имена полей, которые вы инициализируете:
А как еще можно? покороче запись бы...
И хотелось бы имя Tb упомянуть...
Re: Как убрать warning или использование union
Добавлено: Чт авг 25, 2016 08:41:13
ARV
да какая разница, какой тип? если у вас сложный тип, указание конкретного имени поля в инициализаторе избавит вас от варнингов и даст требуемый результат. других вариантов у меня для вас нет.
Re: Как убрать warning или использование union
Добавлено: Чт авг 25, 2016 11:40:18
ESWANT
ARV писал(а):да какая разница, какой тип? если у вас сложный тип, указание конкретного имени поля в инициализаторе избавит вас от варнингов и даст требуемый результат. других вариантов у меня для вас нет.
Спасибо
как избавиться от такого warnin-га
Добавлено: Чт авг 25, 2016 11:55:11
ESWANT
Здравствуйте, подскажите как избавиться от такого предупреждения WinAVR
warning: suggest parentheses around + or - inside shift
(SET_BIT это макрос-широкоизвестный)
Re: как избавиться от такого warnin-га
Добавлено: Чт авг 25, 2016 12:28:42
ARV
не пользуйтесь широкоизвестными макросами, пишите все ручками, пока не научитесь.
Re: как избавиться от такого warnin-га
Добавлено: Чт авг 25, 2016 13:22:14
ESWANT
ARV писал(а):не пользуйтесь широкоизвестными макросами, пишите все ручками, пока не научитесь.
не знаю как у Вас но если очень много писать ручками
то большое количество знаков | ~%&++||<< и т.п. в коде
затуманивают смысл всего написанного и большую часть мощности мозга тратишь на обратное преобразование кода
в термины той предметной области, функционал которой был ранее закодирован
компилятор же должен привести в такой вид и не писать предупреждения - почему он этого не делает?
PORTC |= (1<<(i + 4));
Я конечно не поленюсь и напишу так но всё равно непонятно
Re: Как убрать warning или использование union
Добавлено: Чт авг 25, 2016 13:30:50
ARV
ESWANT писал(а):почему он этого не делает?
чтобы это понять, надо посмотреть, как устроен "общеизвестный макрос", который, например, мне не известен абсолютно.
Re: Как убрать warning или использование union
Добавлено: Чт авг 25, 2016 16:51:31
Аlex
5 секунд и ответ найден -
https://translate.google.ru/#en/ru/sugg ... de%20shift
Неужели это так сложно сделать, прежде чем задать вопрос ?
