|
|
 |
Ответов
|
Nov 11 2009, 07:53
|

Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118

|
Цитата(igorenja @ Nov 11 2009, 09:33)  Что сделает компилятор увидев такой код: Код twi_write_data(0,ptr, data[ptr++]); У меня выдаёт предупреждение: Warning[Pa081]: undefined behavior: the order of read and modification of variable "ptr" (or a value reached by some form of indirection through it) is undefined in this statement
|
|
|
|
|
Nov 11 2009, 08:02
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(LessNik @ Nov 11 2009, 13:53)  У меня выдаёт предупреждение: Warning[Pa081]: undefined behavior: the order of read and modification of variable "ptr" (or a value reached by some form of indirection through it) is undefined in this statement Мой ИАР 4.41 скомпилировал и не выдал ни каких продупреждений. В итоге работало это вот так: Код twi_write_data(0,ptr+1, data[ptr]); На запись: Код twi_write_data(0,ptr++, data[ptr]); выдаёт предупреждение... Короче говоря единственно правильный вариант: Код twi_write_data(0,ptr, data[ptr]); ptr++;
|
|
|
|
|
Nov 11 2009, 09:45
|

читатель даташитов
   
Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999

|
Цитата(igorenja @ Nov 11 2009, 10:02)  Короче говоря единственно правильный вариант: Код twi_write_data(0,ptr, data[ptr]); ptr++; Вообще-то правильнее привыкнуть писать в таких местах ++ptr. Потому что ptr может оказаться сложным типом, при ptr++ может быть создана лишняя копия.
|
|
|
|
|
Nov 11 2009, 12:34
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(HARMHARM @ Nov 11 2009, 13:45)  Вообще-то правильнее привыкнуть писать в таких местах ++ptr. Потому что ptr может оказаться сложным типом, при ptr++ может быть создана лишняя копия. Кстати, да. Из той же серии - полезно писать for ( ...; ++clVariable_) Хотя, для части людей сложно поверить в то, что конструкции for (int i=0; i<10; ++i) и for (int i=0; i<10; i++) Функционально одинаковы, но первая - оптимальнее
|
|
|
|
|
Nov 11 2009, 12:55
|

Знающий
   
Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237

|
Цитата(Dima_G @ Nov 11 2009, 15:34)  Хотя, для части людей сложно поверить в то, что конструкции for (int i=0; i<10; ++i) и for (int i=0; i<10; i++) Функционально одинаковы, но первая - оптимальнее  Бред какой ... Только что проделал такое с VC 6. Результирующий exe-файл в обоих случаях идентичный (проверено тотал коммандером).
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
|
Nov 11 2009, 16:15
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(Demeny @ Nov 11 2009, 16:55)  Бред какой ... Только что проделал такое с VC 6. Результирующий exe-файл в обоих случаях идентичный (проверено тотал коммандером). Потому, что умный компилятор соптимизировал. Но не слишком надейтесь на то, что так будет всегда. Попробуйте проверить с объектом класса с определенным оператором пост и прединкремента
|
|
|
|
Сообщений в этой теме
igorenja Порядок выполнения операций. Вопрос зантокам! Nov 11 2009, 06:33 HARMHARM Сделает вызов функции. Если найдет соответствующий... Nov 11 2009, 06:45 igorenja Цитата(HARMHARM @ Nov 11 2009, 12:45) Сде... Nov 11 2009, 06:49 Dima_G Цитата(igorenja @ Nov 11 2009, 10:33) Что... Nov 11 2009, 07:32 GetSmart Так писать ИМХО не рекомендуется. А вообще, умный ... Nov 11 2009, 07:50      GetSmart Цитата(Dima_G @ Nov 11 2009, 22:15) ...Но... Nov 11 2009, 16:28       Dima_G Цитата(GetSmart @ Nov 11 2009, 20:28) В 2... Nov 11 2009, 16:32      zltigo Цитата(Dima_G @ Nov 11 2009, 19:15) Потом... Nov 11 2009, 17:41       Dima_G Цитата(zltigo @ Nov 11 2009, 20:41) А дур... Nov 12 2009, 04:31  defunct Цитата(igorenja @ Nov 11 2009, 10:02) Кор... Nov 13 2009, 13:46 _Pasha ЦитатаNever rely on argument's order.
Такую та... Nov 11 2009, 08:24 esaulenka HARMHARM, а можно пример?
Не понимаю... Nov 11 2009, 12:37 Dima_G Цитата(esaulenka @ Nov 11 2009, 15:37) HA... Nov 11 2009, 12:47 GetSmart Эта особенность инкремента была актуальна в прошло... Nov 11 2009, 12:51 esaulenka Никогда не задумывался...
Но разве ptr++ - это не... Nov 11 2009, 13:04 GetSmart Кстати, во FreeRTOS встречаются оба варианта инкре... Nov 12 2009, 07:22 Flexz FreeRTOS просто, видимо, разные люди пишут
У Стр... Nov 12 2009, 07:56 HARMHARM Цитата(Flexz @ Nov 12 2009, 09:56) FreeRT... Nov 12 2009, 07:58 Dima_G Цитата(Flexz @ Nov 12 2009, 11:56) У Стра... Nov 12 2009, 08:00  _Pasha Цитата(Dima_G @ Nov 12 2009, 12:00) Но ли... Nov 12 2009, 15:32   Dima_G Цитата(_Pasha @ Nov 12 2009, 19:32) Ладно... Nov 13 2009, 03:18    _Pasha Цитата(Dima_G @ Nov 13 2009, 06:18)
Чет... Nov 14 2009, 01:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|