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

 
 
> 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, 07:56
Сообщение #2


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

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



zltigo, я ждал вашего появления в теме. и был уверен, что вместо ответа на вопрос получу щелчок по носу. спасибо, вы очень помогли.
пока все, что мне было сказано по существу - не выдерживает критики. в чем ущербность моих "измышлизмов"? перед тем, как присвоить переменной значение выражения, выражение должно быть вычислено? ДА. в выражении можно использовать значение самой обновляемой переменной? ДА. пост-инкремент или пре-инкремент допустим в выражении? ДА. существуют ли какие-то иные способы вычислить мое выражение, кроме как тот, что я озвучил? НЕТ. в чем же "опасность", которую видит компилятор?

если X++ * ++X вызывает противоречие с правилом математики, что от перестановки мест множителей произведение не меняется - тут все понятно. но порядок исполнения действий в моем выражениии по-моему однозначный.


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


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ARV @ Jun 24 2009, 10:56) *
zltigo, я ждал вашего появления в теме. и был уверен, что вместо ответа на вопрос получу щелчок по носу. спасибо, вы очень помогли.

1. Сами накликали, однако!
2. Да, помог. Произнес два волшебных слова sequence point. Дальше, как говорится, Sapienti sat, он хлопнет себя по лбу и почитает стандарт, а не продолжит рассказывать...
Цитата
все, что мне было сказано по существу - не выдерживает критики.


--------------------
Feci, quod potui, faciant meliora potentes
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
- - ARV   гм... я свое выражение понимаю так: 1. вычисляется...   Jun 24 2009, 06:47
|- - Непомнящий Евгений   Цитатафактически это выражение эквивалентно такой ...   Jun 24 2009, 07:06
|- - zltigo   Цитата(ARV @ Jun 24 2009, 09:47) P.S. 2 М...   Jun 24 2009, 07:46
|- - demiurg_spb   Я в своё время пытался так делать, но тоже отказал...   Jun 24 2009, 09:56
|- - Непомнящий Евгений   Цитата(demiurg_spb @ Jun 24 2009, 13:56) ...   Jun 24 2009, 11:42
||- - demiurg_spb   Цитата(Непомнящий Евгений @ Jun 24 2009, 15...   Jun 24 2009, 12:43
|- - 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, 12:02) 1. Са...   Jun 24 2009, 08:15


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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 06:29
Рейтинг@Mail.ru


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