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

 
 
> WinAVR: странный warning, паранойя компилятора или тупость программиста?
ARV
сообщение Jun 24 2009, 04:55
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Код
    static uint8_t chanel = 0;
    adc[chanel] = ADC;
    chanel = (++chanel) & 7; // на эту строку ругается
    ADMUX = MUX | chanel;
    ADCSRA |= _BV(ADSC);
warning: operation on 'chanel' may be undefined
лично я не вижу ничего подозрительного в этом коде - обычная сумма по модулю 8, т.е. циклически перебираю каналы АЦП...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Jun 24 2009, 06:47
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



гм... я свое выражение понимаю так:
1. вычисляется выражение правее знака равенства:
1.1. увеличивается на 1 chanel
1.2. накладывается маска 7 на увеличенное значение.
2. результат заносится в chanel

мне кажется, никакой неопределенности тут нет, другой порядок вычисления просто не может быть. да, chanel обновляется дважды, но где тут криминал? фактически это выражение эквивалентно такой цепочке:
Код
chanel++;
chanel &= 7;
не так ли? тут ведь тоже дважды происходит обновление chanel?

P.S. 2 Модератор: зря перенесли тему... в том разделе aesok наверняка дал бы ответ в соответствии с логикой работы компилятора и стандартами, а сюда он, возможно, и не заглянет...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 24 2009, 09:56
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Я в своё время пытался так делать, но тоже отказался от этого - не все компиляторы едят это молчаsmile.gif
Код
++chanel &= 7;


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jun 24 2009, 11:42
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(demiurg_spb @ Jun 24 2009, 13:56) *
Я в своё время пытался так делать, но тоже отказался от этого - не все компиляторы едят это молчаsmile.gif
Код
++chanel &= 7;


а зачем? ИМХО, самый прямой путь - chanel = (chanel+1) & 7. Единственное преимущество вашего кода - экономия символов. Зато его хрен поймешь...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 24 2009, 12:43
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Непомнящий Евгений @ Jun 24 2009, 15:42) *
а зачем? ИМХО, самый прямой путь - chanel = (chanel+1) & 7. Единственное преимущество вашего кода - экономия символов. Зато его хрен поймешь...
Да я полностью с Вами согласен. Просто привёл пример до чего додумался раньше, и что сам так не делаю нынче...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ARV   WinAVR: странный warning   Jun 24 2009, 04:55
- - Непомнящий Евгений   а что вы хотите добиться этим выражением? Почему н...   Jun 24 2009, 05:27
|- - ARV   Цитата(Непомнящий Евгений @ Jun 24 2009, 09...   Jun 24 2009, 06:05
- - Непомнящий Евгений   в вашем выражении chanel изменяется дважды - опера...   Jun 24 2009, 06:18
|- - Непомнящий Евгений   Цитатафактически это выражение эквивалентно такой ...   Jun 24 2009, 07:06
|- - zltigo   Цитата(ARV @ Jun 24 2009, 09:47) P.S. 2 М...   Jun 24 2009, 07:46
|- - XVR   Цитата(demiurg_spb @ Jun 24 2009, 13:56) ...   Jun 25 2009, 07:46
- - ukpyr   ++x и х++ выполняются до и после арифм.выражения. ...   Jun 24 2009, 07:23
|- - ARV   Цитата(ukpyr @ Jun 24 2009, 11:23) ++x и ...   Jun 24 2009, 07:39
|- - Непомнящий Евгений   Цитата(ARV @ Jun 24 2009, 11:39) на счет ...   Jun 24 2009, 07:55
|- - 777777   Цитата(ARV @ Jun 24 2009, 11:39) я бы ска...   Jun 25 2009, 05:55
- - ARV   zltigo, я ждал вашего появления в теме. и был увер...   Jun 24 2009, 07:56
- - zltigo   Цитата(ARV @ Jun 24 2009, 10:56) zltigo, ...   Jun 24 2009, 08:02
- - ARV   Цитата(zltigo @ Jun 24 2009, 12:02) 1. Са...   Jun 24 2009, 08:15


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

 


RSS Текстовая версия Сейчас: 12th August 2025 - 02:20
Рейтинг@Mail.ru


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