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

 
 
> Вопрос к знатокам С.
demiurg_spb
сообщение Oct 20 2008, 16:04
Сообщение #1


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

Группа: Свой
Сообщений: 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;


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Nov 11 2008, 20:02
Сообщение #2


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

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



гм... я и не говорил, что пустой if - это норма... я как раз придерживаюсь противоположного мнения... а вот присваивание временной переменной с моей точки зрения - вполне нормальная практика, логичная и не нарушающая никакие стандартны-нормы-правила. volatile тут совсем ни при чем - этот модификатор никто не отменял и его значение (и назначение) не оспаривается.

на счет "специально заведенных переменных"... на сколько я понимаю, при определенном напряжении сил можно очень сложные выражения (например, нечто типа БПФ) уместить в единственном операторе, избежав "лишних" переменных (обычно они называются локальными)... и, хотя с точки зрения результата это будет совершенно верное "выражение", назвать его удобочитаемым будет можно вряд ли. скорее всего и по объему результирующего кода результат не будет отличаться от "развернутого" варианта...

практика заведения "лишних" переменных лишь для того, чтобы алгоритм вырисовывался четко и ясно с моей точки зрения вполне разумна и оправдана. а компилятор пускай соптимизирует явную избыточность - на то он и компилятор. кстати, весьма оправдан и подход, когда даже небольшие кусочки алгоритма оформляются отдельными функциями - лишь бы наглядность кода была на должном уровне.

можно сколько угодно рассуждать о том, что компилятор "должен сделать", если встретит просто упоминание переменной, но ведь если записать чуть иначе - пропадет сам предмет спора, ибо поведение компилятора станет очевидно на 100%.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 25 2008, 00:06
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ARV @ Nov 11 2008, 22:02) *
практика заведения "лишних" переменных лишь для того, чтобы алгоритм вырисовывался четко и ясно с моей точки зрения вполне разумна и оправдана. а компилятор пускай соптимизирует явную избыточность - на то он и компилятор. кстати, весьма оправдан и подход, когда даже небольшие кусочки алгоритма оформляются отдельными функциями - лишь бы наглядность кода была на должном уровне.

Для того чтобы алгоритм вырисовывался "четко и ясно", на мой взгляд больше подходит другая практика.

Во-первых избегать появления дурного кода - т.е. сводить в минимуму потребность в таких вот "var;" и лишних переменных. С какого бодуна драйвер решил вдруг опустошить содержимое буферов? Ведь можно построить драйвер так, что тупое опустошение не понадобится вовсе! Или почему SPSR надо обязательно читать в никуда?
Можно же хотя бы в целях статистики хранить последнее значение SPSR:
Код
ISR()
{
   ...
   spiContext.LastSpsrVal = SPSR;
}

производительности-то оно не сожрет.

во-вторых - применять практику самодокументируемого кода - завести однозначно понятные макросы:
Код
#define access( x )  // обращение к X
#define ignore( x )  // игнорировать x
...


Встретив в коде
Код
access( SPSR );

Даже те "кто в танке" сразу поймут, что делается с SPSR.
А столкнувшись с "финтом" компилятора - достаточно поменять только тело макроса...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 25 2008, 08:21
Сообщение #4


Гуру
******

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



Цитата(defunct @ Dec 25 2008, 03:06) *
С какого бодуна драйвер решил вдруг опустошить содержимое буферов? Ведь можно построить драйвер так, что тупое опустошение не понадобится вовсе!

Научите sad.gif у LPC2000 за тем-же SPI есть FIFO которое
- не отключается
- нет возможности сбросить его
Как сделать запись по SPI так, что-бы когда-нибудь при чтении можно было прочтать SPI, а не содержимое забитого при записи FIFO.
Цитата
Или почему SPSR надо обязательно читать в никуда?
Можно же хотя бы в целях статистики хранить последнее значение SPSR:

Потому, что там содержится "ничто" которое отлично отправляется в "никуда".
Я бы не отказался и от обратной возможности - записи "ничего", а то бывает приходится писать, например,
Код
VICVectAddr = i;            // Dummy write to signal end of interrupt

при этом необходимость комментариев это мелочь, а вот умозрительный подбор расходной регистровой переменной не радует.

Цитата
spiContext.LastSpsrVal = SPSR;
производительности-то оно не сожрет.

Да? Вместо, например, команды чтения в первый попавшийся расходный регистр будет производится считывание (для load/store через тот-же промежуточный регистр) в структуру находяшуюся в памяти.....
Цитата
Даже те "кто в танке" сразу поймут, что делается с SPSR.

Угу, приходишь в магазин, а там на бутылке с маслом надпись
масло(масло);
Начинаешь думать, а чего это вдруг так написали - может смысл какой есть? Смотришь header спрашиваешь и тебе объясняют,что это масло для танкистов.... smile.gif. В общем-то конечно можно макрос написать, но лишняя сущность.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 25 2008, 13:29
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(zltigo @ Dec 25 2008, 10:21) *
Научите sad.gif у LPC2000 за тем-же SPI есть FIFO которое
- не отключается
- нет возможности сбросить его
Как сделать запись по SPI так, что-бы когда-нибудь при чтении можно было прочтать SPI, а не содержимое забитого при записи FIFO.

Думаю, счетчик отправленных байт должен помочь. Драйвер будет вытаскивать из FIFO ровно то количество байт, которое он запихнул при записи.

Цитата
Я бы не отказался и от обратной возможности - записи "ничего", а то бывает приходится писать, например,
Код
VICVectAddr = i;            // Dummy write to signal end of interrupt

при этом необходимость комментариев это мелочь, а вот умозрительный подбор расходной регистровой переменной не радует.

Можно дать константу (опять же если производительности хватает).
VICVectAddr = 0;
или
VICVectAddr = CurrentVector;
будет чуть-чуть дольше, зато интуитивно понятно, что делается.

Цитата
Да? Вместо, например, команды чтения в первый попавшийся расходный регистр будет производится считывание (для load/store через тот-же промежуточный регистр) в структуру находяшуюся в памяти.....

Да, тут сознательно добавляем запись в память. Медленнее чем в регистр - да, сильно скажется на производительности всей системы - нет! (всего лишь запись одной ячейки на FIFO циклов SPI). Польза от этой записи - когда свалимся в DABT, можно будет снять дамп и посмотреть состояние железа, в т.ч. и значение SPSR (вдруг именно его значение поможет найти причину аборта).

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

Цитата(zltigo @ Dec 25 2008, 10:21) *
Угу, приходишь в магазин, а там на бутылке с маслом надпись
масло(масло);

smile.gif
Ну всяко лучше так, чем взять банку с желтым содержимым без надписи и понять что это совсем не масло, когда содержимое уже плеснули на сковородку. smile.gif

Цитата
В общем-то конечно можно макрос написать, но лишняя сущность.

Дело привычки. Например как Вы поступите если есть некий шаблон колбека:

Код
typedef void (*putmsg_cb)(char *, int, int)


и куча функций подпадающих под этот шаблон, но не использующих все параметры?

Мне удобно поступать так:

Код
void xx_putmsg( char *msg, int size, int priority)
{
    ignore( priority ); // <-- избавились от warning'a и сразу видно, что параметр priority нафиг не нужен
    ...
}
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 25 2008, 14:06
Сообщение #6


Гуру
******

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



Цитата(defunct @ Dec 25 2008, 16:29) *
Думаю, счетчик отправленных байт должен помочь. Драйвер будет вытаскивать из FIFO ровно то количество байт, которое он запихнул при записи.

Вопрос ведь в том, КУДА ОН ИХ БУДЕТ ДЕВАТЬ после ВЫТАСКИВАНИЯ? Выбрасывать? Вы обещали научить меня писать драйвера
Цитата
.... так, что тупое опустошение не понадобится вовсе!

Если под "умным" опустошением предполагается их, при их априори полной бесполезности тем не менее складывать куда-то дабы "когда свалимся в DABT, можно будет снять дамп и посмотреть", то что тогда назвать безумием smile.gif smile.gif smile.gif
Цитата
будет чуть-чуть дольше, зато интуитивно понятно, что делается.

И дольше и уж абсолютно интуитивно не понятна запись совершенно конкретного нуля, когда на самом деле может быть записано абсолютно произвольное значение sad.gif. В общем это,конечно, мелочи... Но лучше владеть языком так, дабы не было и мелких огрехов, а не уповать на то, что "твоя моя и так понимай если твоя моя понимай однако нада будет".

Цитата(defunct @ Dec 25 2008, 16:29) *
Дело привычки. Например как Вы поступите если есть некий шаблон колбека:
Код
typedef void (*putmsg_cb)(char *, int, int)


и куча функций подпадающих под этот шаблон, но не использующих все параметры?

Мне удобно поступать так:

Код
void xx_putmsg( char *msg, int size, int priority)
{
    ignore( priority ); // <-- избавились от warning'a и сразу видно, что параметр priority нафиг не


Будете смеяться, но мне - удобно АБСОЛЮТНО аналогично smile.gif.
Код
#define argsused(foo) (void)(foo)
argsused( priority );

Только это совсем разные случаи, ибо в описываемый ранее
SPSR;
Абсолютно самодостаточен и не совершенно не нуждается, в отличии от priority, ни в каких мусорных обертках ignore( SPSR ); Если хотите сделать понятным для "танкистов", то напишите комментарий - "танкист" чуть-чуть выглянет из люка и узнает немного нового smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 25 2008, 15:32
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(zltigo @ Dec 25 2008, 16:06) *
Вопрос ведь в том, КУДА ОН ИХ БУДЕТ ДЕВАТЬ после ВЫТАСКИВАНИЯ? Выбрасывать?

Складывать в кольцевой буфер, и "семафорить - данные есть". Если эти данные хоть кому-то нужны, обрабатывающий процесс их заберет, если не нужны драйвер перетрет их нафиг по кольцу. Но взятки - гладки, свою работу - принять, нативно опустошить, просигналить - драйвер сделал.

Цитата
Вы обещали научить меня писать драйвера

Это перебор. Я такого не обещал, к тому же Вы и так умеете их писать.
А порассуждать как можно написать драйвер, чтобы избежать пустых чтений - это пожалуйста. smile.gif

Цитата
Если под "умным" опустошением предполагается их, при их априори полной бесполезности тем не менее складывать куда-то дабы "когда свалимся в DABT, можно будет снять дамп и посмотреть", то что тогда назвать безумием smile.gif smile.gif smile.gif

Под "умным" опустошением понимаем - монотонную работу драйвера. Не ему решать что полезно, а что бесполезно. Принимать без разбора драйвер должен абсолютно все, что физически приходит, и отдавать upper layer'у на рассмотрение.

Цитата
Но лучше владеть языком так, дабы не было и мелких огрехов, а не уповать на то, что "твоя моя и так понимай если твоя моя понимай однако нада будет".

Бесспорно. Но, даже при хорошем владении языком, лучше уходить от неоднозначностей там где можно, а там где нет неоднозначностей - подчеркивать логику работы кода:

if (a || b && c)
или
if (a || (b && c) )
вроде одно и то же, но второе ведь наглядней.

Цитата
Будете смеяться, но мне - удобно АБСОЛЮТНО аналогично smile.gif.

Смеяться не буду, - хорошо, что мы на одной волне в этом вопросе smile.gif

Цитата
Только это совсем разные случаи, ибо в описываемый ранее
SPSR;
Абсолютно самодостаточен и не совершенно не нуждается, в отличии от priority

Я бы не был так категоричен. Потому что SPSR - это не переменная, а макрос. Что там за ним спрятано - хз. Скажете, а UM на что, а если его нет под рукой у читателя кода?

Цитата
ни в каких мусорных обертках ignore( SPSR ); Если хотите сделать понятным для "танкистов", то напишите комментарий - "танкист" чуть-чуть выглянет из люка и узнает немного нового smile.gif

шутку понял smile.gif

Но все же
argused()
ignore()
accessed()
и т.п. делают код прозрачнее, и гибче при переносе.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 25 2008, 16:09
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(defunct @ Dec 25 2008, 17:32) *
if (a || b && c)
или
if (a || (b && c) )
вроде одно и то же, но второе ведь наглядней.
Это далеко не одно и то же. Логические операции И и ИЛИ всегда выполняются слева направо. Даже компилятор не имеет права изменить этот порядок. Эквивалентным будет if (( a || b ) && c) и со скобками действительно нагляднее.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 25 2008, 16:24
Сообщение #9


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Сергей Борщ @ Dec 25 2008, 18:09) *
Это далеко не одно и то же. Логические операции И и ИЛИ всегда выполняются слева направо. Даже компилятор не имеет права изменить этот порядок. Эквивалентным будет if (( a || b ) && c) и со скобками действительно нагляднее.

А приоритеты операций?

Все-таки
if (a || b && c)
или
if (a || (b && c) )
это одно и то же.
Если есть время, просимулируйте вот этот тестик:
Код
void test(void)
{
   int a = 1;
   int b = 0;
   int c = 0;

   if (a || b && c )
      printf("1 || (0 && 0)");
   else
      printf("(1 || 0) && 0");
}

У меня результат этого теста - "1 || (0 && 0)". (RVDS 2.2 и 3.1).
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 25 2008, 17:09
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(defunct @ Dec 25 2008, 18:24) *
А приоритеты операций?

Все-таки
if (a || b && c)
или
if (a || (b && c) )
это одно и то же.
Точно. Приоритеты подзабыл. Решил, что у них одинаковый приоритет. Посыпаю голову окурками.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 25 2008, 17:21
Сообщение #11


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Сергей Борщ @ Dec 25 2008, 19:09) *

Да все в порядке. Как раз хороший пример получился beer.gif - лишний раз подчеркнуть логику работы кода - это только плюс.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - scifi   Итак, итоги: 1) Согласно стандарту языка для чтени...   Oct 21 2008, 17:42
|- - zltigo   Цитата(scifi @ Oct 21 2008, 19:42) Другим...   Oct 21 2008, 17:52
- - 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
|- - HARMHARM   Цитата(zltigo @ Dec 25 2008, 10:21) Я бы ...   Dec 25 2008, 11:19
||- - zltigo   Цитата(HARMHARM @ Dec 25 2008, 14:19) Код...   Dec 25 2008, 11:42
|- - 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


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

 


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


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