|
Вопрос к знатокам С. |
|
|
|
Oct 20 2008, 16:04
|

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

|
Возник тут вопрос. Кусочек программы можно написать двумя способами, но с одним и тем же правильным результатом (компилятор avr-gcc 4.1.2). Вопрос: это можно взять на вооружение? И что стандарт может нам сказать по этому поводу? Спасибо. Код //============================================ unsigned char temp;
temp = *uart->pUDR; // Очищаем буфер 3-его уровня. temp = *uart->pUDR; temp = *uart->pUDR;
//============================================ *uart->pUDR; // Очищаем буфер 3-его уровня. *uart->pUDR; *uart->pUDR;
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
 |
Ответов
|
Oct 21 2008, 17:42
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Итак, итоги: 1) Согласно стандарту языка для чтения volatile переменной var достаточно написать Код var; Кому интересно, могу подкрепить это цитатами из стандарта. 2) Очевидно, что такой код не проходит тест "даже моя бабушка поймёт, что это значит". Другими словами, читаемость кода страдает. 3) Вывод. Каждый решает сам, что лучше: - пожетворать читаемостью кода - бороться с предупреждениями компилятора при присваивании вспомогательной переменной Код dummy = var; Итак, задача сведена к спору "читаемость кода против подавления предупреждений компилятора". Как известно, такой спор заведомо неразрешим, так что дальнейшие дискуссии результата не принесут :-)
|
|
|
|
|
Oct 21 2008, 17:52
|

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

|
Цитата(scifi @ Oct 21 2008, 19:42)  Другими словами, читаемость кода страдает. Это утверждение абсолютно ложное  , посему и "вывод" такой-же. Код var; // Это читабельно А что-то типа такого, даже максимально обвешенного для понимания ненужности "финтов": Код { int tmp = var; tmp = tmp; } // Много, много хуже. А такое: Код tmp = var; // Вообще безобразие
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
demiurg_spb Вопрос к знатокам С. Oct 20 2008, 16:04 zltigo Цитата(demiurg_spb @ Oct 20 2008, 18:04) ... Oct 20 2008, 16:17 sergeeff Цитата(zltigo @ Oct 20 2008, 20:17) Поско... Oct 21 2008, 15:08 sonycman Цитата(zltigo @ Oct 20 2008, 20:17) Поско... Jan 4 2009, 11:12  zltigo Цитата(sonycman @ Jan 4 2009, 14:12) Как ... Jan 4 2009, 14:31   sonycman Цитата(zltigo @ Jan 4 2009, 18:31) Что-то... Jan 4 2009, 15:42    zltigo Цитата(sonycman @ Jan 4 2009, 18:42) чтоб... Jan 4 2009, 16:05    GetSmart Цитата(sonycman @ Jan 4 2009, 21:42) Попр... Jan 4 2009, 16:22     zltigo Цитата(GetSmart @ Jan 4 2009, 19:22) но т... Jan 4 2009, 16:27      GetSmart Цитата(zltigo @ Jan 4 2009, 22:27) С чего... Jan 4 2009, 17:05       zltigo Цитата(GetSmart @ Jan 4 2009, 20:05) то в... Jan 4 2009, 17:49       Сергей Борщ Цитата(GetSmart @ Jan 4 2009, 19:05) Если... Jan 4 2009, 19:00        sonycman Цитата(Сергей Борщ @ Jan 4 2009, 23:00) Т... Jan 4 2009, 20:18 scifi Спасибо за подсказку.
Я, по незнанию, наверное, вс... Oct 20 2008, 17:27 demiurg_spb Цитата(scifi @ Oct 20 2008, 21:27) Спасиб... Oct 20 2008, 18:05 zltigo Цитата(scifi @ Oct 20 2008, 19:27) ...но ... Oct 20 2008, 18:17  scifi Цитата(zltigo @ Oct 20 2008, 22:17) 1.Упо... Oct 20 2008, 18:35   zltigo Цитата(scifi @ Oct 20 2008, 20:35) Контрп... Oct 20 2008, 19:11    scifi Цитата(zltigo @ Oct 20 2008, 22:17) 1.Упо... Oct 20 2008, 19:34     demiurg_spb Цитата(scifi @ Oct 20 2008, 23:34) Я запу... Oct 20 2008, 19:53 zltigo Цитата(demiurg_spb @ Oct 20 2008, 21:53) ... Oct 21 2008, 15:57 sergeeff Без финтов - это отлично, но!!! - очен... Oct 21 2008, 17:01 aaarrr Цитата(sergeeff @ Oct 21 2008, 21:01) Кол... Oct 21 2008, 17:06 Сергей Борщ Цитата(sergeeff @ Oct 21 2008, 20:01) Чте... Oct 21 2008, 20:38  zltigo Цитата(Сергей Борщ @ Oct 21 2008, 22:38) ... Oct 21 2008, 20:42   Сергей Борщ Цитата(zltigo @ Oct 21 2008, 23:42) Любой... Oct 21 2008, 20:46  zltigo Цитата(Сергей Борщ @ Oct 21 2008, 22:38) ... Oct 21 2008, 20:51   Сергей Борщ Цитата(zltigo @ Oct 21 2008, 23:51) Не ст... Oct 21 2008, 20:59    zltigo Цитата(Сергей Борщ @ Oct 21 2008, 22:59) ... Oct 21 2008, 21:19     demiurg_spb Попробовал на древнем:
Цитата# IAR Atmel AVR C/EC+... Oct 21 2008, 21:34     Сергей Борщ Цитата(zltigo @ Oct 22 2008, 00:19) Это т... Oct 21 2008, 21:38      zltigo Цитата(Сергей Борщ @ Oct 21 2008, 23:38) ... Oct 21 2008, 21:53       Сергей Борщ Цитата(zltigo @ Oct 22 2008, 00:50) Тем н... Oct 21 2008, 21:55        zltigo Цитата(Сергей Борщ @ Oct 21 2008, 23:55) ... Oct 21 2008, 22:02   Непомнящий Евгений Цитата(zltigo @ Oct 22 2008, 00:51) Одноз... Oct 22 2008, 04:41    IgorKossak Цитата(Непомнящий Евгений @ Oct 22 2008, 07... Oct 22 2008, 05:53    zltigo Цитата(Непомнящий Евгений @ Oct 22 2008, 06... Oct 22 2008, 06:40  ReAl Цитата(Сергей Борщ @ Oct 21 2008, 22:38) ... Nov 10 2008, 11:49   IgorKossak Цитата(ReAl @ Nov 10 2008, 13:49) Однако ... Nov 11 2008, 10:09    ReAl Цитата(IgorKossak @ Nov 11 2008, 12:09) Т... Nov 11 2008, 13:17   VladimirYU Код volatile int x;
x ? : x;
IAR AVR 4.12 ... Nov 11 2008, 10:56    aaarrr Цитата(VladimirYU @ Nov 11 2008, 13:56) К... Nov 11 2008, 11:13     VladimirYU Цитата(aaarrr @ Nov 11 2008, 15:13) Можно... Nov 11 2008, 11:42      aaarrr Цитата(VladimirYU @ Nov 11 2008, 14:42) В... Nov 11 2008, 11:43       VladimirYU Цитата(aaarrr @ Nov 11 2008, 15:43) Значи... Nov 11 2008, 11:57        aaarrr Цитата(VladimirYU @ Nov 11 2008, 14:57) к... Nov 11 2008, 12:02         VladimirYU Цитата(aaarrr @ Nov 11 2008, 16:02) Листи... Nov 11 2008, 12:17        aaarrr Цитата(VladimirYU @ Nov 11 2008, 14:57) S... Nov 11 2008, 13:31         VladimirYU Цитата(aaarrr @ Nov 11 2008, 16:31) Они т... Nov 11 2008, 13:43          aaarrr Цитата(VladimirYU @ Nov 11 2008, 16:43) Р... Nov 11 2008, 13:51         ReAl Цитата(aaarrr @ Nov 11 2008, 15:31) Они т... Nov 11 2008, 13:46          VladimirYU Цитата(ReAl @ Nov 11 2008, 16:46) Может г... Nov 11 2008, 13:59           Сергей Борщ Цитата(VladimirYU @ Nov 11 2008, 16:59) Т... Nov 11 2008, 14:05            aaarrr Цитата(Сергей Борщ @ Nov 11 2008, 17:05) ... Nov 11 2008, 14:10            VladimirYU Цитата(Сергей Борщ @ Nov 11 2008, 17:05) ... Nov 11 2008, 14:24         VladimirYU Цитата(aaarrr @ Nov 11 2008, 16:31) Они т... Nov 11 2008, 13:46      ReAl Цитата(VladimirYU @ Nov 11 2008, 13:42) В... Nov 11 2008, 13:42    Непомнящий Евгений Цитата(VladimirYU @ Nov 11 2008, 14:56) К... Nov 11 2008, 11:23     zltigo Цитата(Непомнящий Евгений @ Nov 11 2008, 14... Nov 11 2008, 12:19      aaarrr Цитата(zltigo @ Nov 11 2008, 15:19) Это в... Nov 11 2008, 12:22       zltigo Цитата(aaarrr @ Nov 11 2008, 15:22) Тогда... Nov 11 2008, 12:27      VladimirYU Цитата(zltigo @ Nov 11 2008, 16:19) Это в... Nov 11 2008, 12:26 ARV а, простите, разве писать читаемый всеми код - это... Nov 11 2008, 11:13 aaarrr Цитата(ARV @ Nov 11 2008, 14:13) Кодuchar... Nov 11 2008, 11:15  ARV Цитата(aaarrr @ Nov 11 2008, 14:15) Ворни... Nov 11 2008, 17:32   aaarrr Цитата(ARV @ Nov 11 2008, 20:18) возможно... Nov 11 2008, 17:39   ReAl Цитата(ARV @ Nov 11 2008, 19:32) возможно... Nov 11 2008, 18:53 aaarrr RVCT на пропуск операнда ругается. Nov 11 2008, 12:33 ARV гм... я и не говорил, что пустой if - это норма...... Nov 11 2008, 20:02 defunct Цитата(ARV @ Nov 11 2008, 22:02) практика... Dec 25 2008, 00:06  zltigo Цитата(defunct @ Dec 25 2008, 03:06) С ка... Dec 25 2008, 08:21   HARMHARM Цитата(zltigo @ Dec 25 2008, 10:21) Я бы ... Dec 25 2008, 11:19    zltigo Цитата(HARMHARM @ Dec 25 2008, 14:19) Код... Dec 25 2008, 11:42   defunct Цитата(zltigo @ Dec 25 2008, 10:21) Научи... Dec 25 2008, 13:29    zltigo Цитата(defunct @ Dec 25 2008, 16:29) Дума... Dec 25 2008, 14:06     defunct Цитата(zltigo @ Dec 25 2008, 16:06) Вопро... Dec 25 2008, 15:32      Сергей Борщ Цитата(defunct @ Dec 25 2008, 17:32) if ... Dec 25 2008, 16:09       defunct Цитата(Сергей Борщ @ Dec 25 2008, 18:09) ... Dec 25 2008, 16:24        Сергей Борщ Цитата(defunct @ Dec 25 2008, 18:24) А пр... Dec 25 2008, 17:09         defunct Цитата(Сергей Борщ @ Dec 25 2008, 19:09) ... Dec 25 2008, 17:21          ARV Цитата(defunct @ Dec 25 2008, 20:21) Да в... Dec 27 2008, 13:45 ReAl Если Вам приятно в таком духе - продолжайте, утрир... Nov 11 2008, 22:04 gormih Обсуждение напоминает обсуждение кода типа
Кодuns... Nov 14 2008, 11:31 ARV хочу для универсализма сделать версию функции prin... Nov 17 2008, 15:59 Сергей Борщ Кодvoid printf_7led(char *format, ... ){
... Nov 17 2008, 16:24 ARV большое спасибо! я вокруг чего-то похожего бро... Nov 17 2008, 17:25 ReAl Цитата(ARV @ Nov 17 2008, 19:25) мне каже... Dec 11 2008, 08:56  ARV Цитата(ReAl @ Dec 11 2008, 11:56) Ну избы... Dec 12 2008, 07:09   zltigo Цитата(ARV @ Dec 12 2008, 10:09) ...сдела... Dec 12 2008, 07:15    ARV Цитата(zltigo @ Dec 12 2008, 10:15) http:... Dec 13 2008, 11:46 sonycman В оригинальной библиотеке для STM32 квалификатор v... Jan 4 2009, 18:30 zltigo Цитата(sonycman @ Jan 4 2009, 21:30) Но, ... Jan 4 2009, 18:34 sergeeff Я пробовал такое в MS VS2008 для ARM. Данные читаю... Jan 4 2009, 20:36
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|