Перейти к содержанию
    

Не компилируется &&= в C++

2 hours ago, razrab83 said:

в случае int c = a - b (см выше) - криминала нет, даже если есть ворнинг. (при условии, что int 4 байта и это 32-х битный проц). Какая разница в каком порядке а и бэ? Ну обратится сначала к "а", потом к "b" - или наоборот?

Если эти а и бэ - не просто переменные, а какие-нибудь регистры (о чём, в общем случае, компилятору неведомо), то от перестановки слагаемых можно поиметь оооочень интересные грабли в случае "для сброса флага считать регистр статуса, потом регистр данных".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, esaulenka сказал:

Если эти а и бэ - не просто переменные, а какие-нибудь регистры...

Мы обсуждаем не гипотетические случаи, а конкретный макрос. В данном случае это указатель кольцевого буфера (хоть программный, хоть аппаратный). RP судя по всему изменяется только тут (в функции чтения буфера), RW в другом месте/местах. Что с того что указатели буфера в макросе будут считаны в произвольном порядке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, razrab83 said:

Что с того что указатели буфера в макросе будут считаны в произвольном порядке?

Тут - очевидно, ничего. Осталось только объяснить этот конкретный случай компилятору.

 

Вопрос, на самом деле, интересный. Я никогда активно не пользовался IAR'ом (только какие-то чужие проекты собрать), но с варнингом "два volatile'а в одном выражении" сталкивался. Вот только где, блин?..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, esaulenka сказал:

Осталось только объяснить этот конкретный случай компилятору.

В 27.07.2011 в 22:57, zltigo сказал:

Если уверны, что ни к каким побочным эффектам в данном выражении проблема с тем, что переменная volatile, не приведет (а это обычное дело при помянутой Вами передаче в функции), то просто

прикройте предупреждение с этом конкретном месте прагмой.

#pragma diag_suppress=Pa082

......

......

#pragma diag_warning=Pa082

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 минут назад, esaulenka сказал:

Вопрос, на самом деле, интересный. Я никогда активно не пользовался IAR'ом (только какие-то чужие проекты собрать), но с варнингом "два volatile'а в одном выражении" сталкивался. Вот только где, блин?..

У меня та же самая ситуация. Но думаю всё же, что это IAR-специфичный warning.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я, конечно, понимаю желание отстоять свою точку зрения, но мне почему-то кажется, что написать исходное выражение в две строчки (прочитать во временную переменную a, вычесть бэ) сильно проще, чем писать прагмы.

 

Я уж не говорю о переносимости этих прагм...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ps 2Сергей Борщ

Хороший функционал, сказал что-то, потом подумал/почитал другие сообщения, и понял что последнее сообщение лишнее/неуместно - удалил. Но этот функционал я так понял имеют только избранные модеры (не нашел где я могу удалить своё сообщение). А этого функционала очень не хватает простым смертным. Понятно, что удалалять сообющения шерстить форум в праве только модераторы. Но дайте возможность удалять свои сообщения , хотя бы до того момента, пока моё сообщение последнее? А то приходится его просто редактировать и вместо всего текста писать одну букву. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не возбуждайтесь. Я прочитал ваше сообщение на предыдущей странице и, не заметив, что есть еще вторая страница, ответил на него. После публикации увидел предыдущие сообщения и в первом же после вашего, на которое я отвечал, было написано то же самое, что написал я. Именно поэтому я свое сообщение удалил. Удаление сообщений у меня никакими особыми флажками не помечено, я понятия не имею, что оно для своих сообщений доступно только модераторам. Так что на его отсутствие у себя жалуйтесь в лигу сексуальных реформ администраторам в соотвествующем разделе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, Сергей Борщ сказал:

Я прочитал ваше сообщение на предыдущей странице и, не заметив, что есть еще вторая

я так и сказал (нужное подчеркнуть): "сказал что-то, потом подумал/почитал другие сообщения, и понял что последнее сообщение лишнее/неуместно - удалил."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...