|
Вопрос к знатокам С. |
|
|
|
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:01
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Без финтов - это отлично, но!!! - очень непривычно. Чтение из переменной очевидно, когда оно стоит справа от знака присваивания. И когда этот знак опущен это и вызывает недоумение и неприятие.
Я думаю, если бы разместить где-нибудь на форумах вопрос типа: "Что означает выражение для переменной volatile int x?: x;"
абсолютное большинство ответит неправильно. Посему, учитывая, что всех не переучишь, и почти все люди работают в коллективах, я бы именно из этих соображений оставил бы: int temp = x;.
Коллеге zltigo респект за неординарный подход. Тем более, что почти аналогичное использование чтения переменной, например, в while(x) ни у кого вопросов не вызвало бы.
|
|
|
|
|
Oct 21 2008, 20:38
|

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

|
Цитата(sergeeff @ Oct 21 2008, 20:01)  Чтение из переменной очевидно, когда оно стоит справа от знака присваивания. К слову: совершенно неочевидно, что занесение значения в переменную слева от знака присваивания является лишь побочным эффектом опрератора "=", но это так и есть. Цитата(scifi @ Oct 21 2008, 20:42)  1) Согласно стандарту языка для чтения volatile переменной var достаточно написать Код var; Кому интересно, могу подкрепить это цитатами из стандарта. Очень интересно. ИАР для АРМов, версии 4.30 точно (более старшие не проверял), с легкостью выкидывает такие обращения. ReAl объяснил это мутностью стандарта в этой части. Самому искать было лень. Но раз вы предлагаете найти - с удовольствием почитаю цитаты. Цитата(scifi @ Oct 21 2008, 20:42)  - бороться с предупреждениями компилятора при присваивании вспомогательной переменной Код dummy = var; Все встречавшиеся мне компиляторы убирали предупреждение при добавлении строчки dummy = dummy;
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 21 2008, 20:51
|

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

|
Цитата(Сергей Борщ @ Oct 21 2008, 22:38)  Все встречавшиеся мне компиляторы убирали предупреждение при добавлении строчки dummy = dummy; Наиблее часто встречающийся  с "финтами", но безграмотный вариант  . Однозначный и независимый от компилятора и опимизации: Код (void)dummy; Цитата(Сергей Борщ @ Oct 21 2008, 22:46)  Вот сейчас специально поставлю ИАР и приведу листинг. Именно volatile переменную. Момент... Не стоит  . Не получится.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 21 2008, 20:59
|

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

|
Цитата(zltigo @ Oct 21 2008, 23:51)  Не стоит  . Не получится. Если бы не получалось, я бы в эту ветку не писал: Пожалуйста: Код OS_INTERRUPT void Timer_ISR() { OS::TISRW ISRW;
T1IR; // = T1IR; // clear int flag IO0SET = (1 << 29); На строку с комментарием предупреждение: Warning[Pe174]: expression has no effect D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\Src\main.cpp 108 CODE ####################################################################### ####### # # # IAR ARM ANSI C/C++ Compiler V4.30A/W32 EVALUATION 21/Oct/2008 23:47:48 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\ # # Src\main.cpp # # Command line = D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\ # # Src\main.cpp -D LPC2119 -lCN # # D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\ # # List\ -o D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-E # # ventFlag\Obj\ -s9 --debug --cpu_mode thumb --endian # # little --cpu ARM7TDMI-S --stack_align 4 --interwork # # -e --fpu None --eec++ --dlib_config # # D:\Programs\IAR\arm\LIB\dl4tptinl8n.h -I # # D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\ # # Src\ -I D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-Ev # # entFlag\..\scmRTOS\Common\ -I # # D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\ # # ..\scmRTOS\ARM7\ -I D:\Programs\IAR\arm\INC\ # # List file = D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\ # # List\main.lst # # Object file = D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\ # # Obj\main.r79 # # # # # ############################################################################## ......................... \ In segment DATA_AN, at 0xe0008000 \ <unnamed> volatile __data _A_T1IR \ _A_T1IR: \ 00000000 DS8 4 ......................... 104 OS_INTERRUPT void Timer_ISR() 105 { \ ??Timer_ISR: \ 00000000 04E04EE2 SUB LR,LR,#+0x4 \ 00000004 1F502DE9 STMDB SP!,{R0-R4,R12,LR} ;; Push 106 OS::TISRW ISRW; \ 00000008 70409FE5 LDR R4,??Timer_ISR_1 ;; Kernel \ 0000000C 1400D4E5 LDRB R0,[R4, #+0x14] \ 00000010 010080E2 ADD R0,R0,#+0x1 \ 00000014 1400C4E5 STRB R0,[R4, #+0x14] 107 108 T1IR; // = T1IR; // clear int flag 109 IO0SET = (1 << 29); \ 00000018 4E02A0E3 MOV R0,#-536870908 \ 0000001C A00B80E3 ORR R0,R0,#+0x28000 \ 00000020 8015A0E3 MOV R1,#+0x20000000 \ 00000024 001080E5 STR R1,[R0, #+0]
Компилятор не такой и старый, сильно моложе чем C99 не говоря уже о C89: Цитата IAR C/C++ Compiler for ARM 4.30A Evaluation (4.30.1.237) D:\Programs\IAR\arm\bin\iccarm.exe 09.02.2005 21:13:44, 9539584 bytes Поэтому и хочется увидеть цитату из стандарта. А самому искать лень  GCC даже в версии 3.2.3 от 2003(?) года не выкидывает.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 21 2008, 21:19
|

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

|
Цитата(Сергей Борщ @ Oct 21 2008, 22:59)  На строку с комментарием предупреждение: Warning[Pe174]: expression has no effect Это типичное сообщение при выкидывании не volatile переменной. Просто T1IR неведомо как описан. Давай чистый эксперимент. Код volatile int dummy = 0; ..... function() { dummy; Поскольку я пишу на "С" уже лет 20, именно так, в том числе и под IAR, года 4, то в результате СИШНОГО КОМПИЛЯТОРА я более, чем уверен. В догонку: Код ############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 22/Oct/2008 01:13:05 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = arm # # Endian = little # # Stack alignment = 8 # # Source file = D:\ARM_WORK\auc\MAIN\fiqhandl.c # # Command line = D:\ARM_WORK\auc\MAIN\fiqhandl.c -D LPC2000_IAR -lC # # D:\ARM_WORK\auc\Works_Kernel\List\ -lA # # D:\ARM_WORK\auc\Works_Kernel\List\ --remarks -o # # D:\ARM_WORK\auc\Works_Kernel\Obj\ -s9 --cpu_mode # # arm --endian little --cpu ARM7TDMI-S --stack_align # # 8 --warnings_affect_exit_code # # --no_path_in_file_macros --migration_preprocessor_ex # # tensions -e --require_prototypes --fpu None # # --dlib_config "D:\IAR\Embedded # # Workbench\arm\LIB\dl4tpannl8n.h" -I # # D:\ARM_WORK\auc\..\COMMON\RTOS\portable\IAR\LPC2000\ # # -I D:\ARM_WORK\auc\..\COMMON\RTOS\include\ -I # # D:\ARM_WORK\auc\..\COMMON\include\ -I # # D:\ARM_WORK\auc\main\include\ -I "D:\IAR\Embedded # # Workbench\arm\INC\" --inline_threshold=8 # # List file = D:\ARM_WORK\auc\Works_Kernel\List\fiqhandl.lst # # Object file = D:\ARM_WORK\auc\Works_Kernel\Obj\fiqhandl.r79 # # # # # ##############################################################################
D:\ARM_WORK\auc\MAIN\fiqhandl.c 1 2 #include <stdlib.h> 3 #include "RTOS.h"
\ In segment DATA_AN, at 0xe01fc140 \ union <unnamed> volatile __data _A_EXTINT \ _A_EXTINT: \ 00000000 DS8 4 4 #include "fiqhandl.h" 5
\ In segment DATA_Z, align 4, align-sorted 6 volatile int dummy1; \ dummy1: \ 00000000 DS8 4
\ In segment DATA_Z, align 4, align-sorted 7 int dummy2; \ dummy2: \ 00000000 DS8 4 8 9 //--------------------------------------------------------------------------- 10 // 11 //---------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next 12 __fiq __arm void FIQ_ISR_handler(void) 13 { 14 15 dummy1; \ FIQ_ISR_handler: \ 00000000 14809FE5 LDR R8,??FIQ_ISR_handler_0 ;; dummy1 \ 00000004 008098E5 LDR R8,[R8, #+0] 16 dummy2; ^ Warning[Pe174]: expression has no effect 17 18 Оба варианта - c выкидыванием и без. Более старях компиляторов не держу, но если что, то и на самом старом и кривом имеющимся у меня BCC 3.1 будет тоже самое. Ибо вариантов нет.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 21 2008, 21:38
|

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

|
Цитата(zltigo @ Oct 22 2008, 00:19)  Это типичное сообщение при выкидывании не volatile переменной. Просто T1IR неведомо как описан. Я специально дал вырезку из листинга, в которой он сам эту переменную описывает как volatile: Код \ In segment DATA_AN, at 0xe0008000 \ <unnamed> volatile __data _A_T1IR \ _A_T1IR: \ 00000000 DS8 4 По поводу типичности сообщений один человек очень красиво написал на AVRFreaks: Цитата In the case of warnings, the answer never lies in the C standard. The C standard does not require any warnings. We are trying to read the minds of the gods. As a rule, a compiler issues a warning when you have done something that is allowed, but the compiler suspects might not be what you intended. Цитата(zltigo @ Oct 22 2008, 00:19)  Давай чистый эксперимент. Не вопрос: Код volatile int dummy = 0; void function() { dummy; } //--------------------------------------------------------------------------- OS_INTERRUPT void Timer_ISR() { OS::TISRW ISRW;
T1IR; // = T1IR; // clear int flag Цитата Warning[Pe174]: expression has no effect D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\Src\main.cpp 106 Warning[Pe174]: expression has no effect D:\Projects\Req\scmRTOS\Samples\LPC2xxx\1-EventFlag\Src\main.cpp 113 Цитата(zltigo @ Oct 22 2008, 00:19)  Поскольку я пишу на "С" уже лет 20, именно так, в том числе и под IAR, года 4, то в результате СИШНОГО КОМПИЛЯТОРА я более, чем уверен. Я не хочу спорить. ИАР вполне себе сишный компилятор и становится все лучше год от года. Я лишь хочу разобраться - это была бага или есть фича. Если стандарт описывает поведение однозначно - бага. Если нет - фича, и каждую версию каждого компилятора надо будет проверять на необходимость workaround с временной переменной, что я и делаю пока не разобрался в этом вопросе досконально. И как ни крути, хоть вариант без временной переменной красив, но, как видим, не всегда работает. А вариант с временной переменной работает всегда. Следовательно надо разобраться, кто виноват в непортируемости - компилятор, который не соответствует стандарту или программист, понадеявшийся на нерегламентируемое стандартом поведение компилятора. Цитата(zltigo @ Oct 22 2008, 00:19)  В догонку: В новой версии behaviour изменился  Все, спать. Иначе придется самим в стандарте копаться
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 21 2008, 21:53
|

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

|
Цитата(Сергей Борщ @ Oct 21 2008, 23:38)  ИАР вполне себе сишный компилятор и.... Тем не менее, ты компилишь П Л Ю С О В Ы М (точнее недоплюсовым  ) компилятором, почему-то рассуждая о C99. Кроме того, ты получил более, чем вменяемый Warning. Цитата(Сергей Борщ @ Oct 21 2008, 23:38)  ...но, как видим, не всегда работает Я бы поверил, в баг конкретного компилятора, если-бы не работал и с этой версией компилятора, причем гарантированно, многократно и постоянно использовал и использую, как минимум: SSPDR; для очистки FIFO SSP при полудуплексной передаче. Хидеры традиционно использую самописные. Цитата(Сергей Борщ @ Oct 21 2008, 23:38)  По поводу типичности сообщений один человек очень красиво написал на AVRFreaks: В данном случае я говорю о типичном собщении совершенно конкретного компилятора.
--------------------
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 aaarrr Цитата(sergeeff @ Oct 21 2008, 21:01) Кол... Oct 21 2008, 17:06  zltigo Цитата(Сергей Борщ @ Oct 21 2008, 22:38) ... Oct 21 2008, 20:42   Сергей Борщ Цитата(zltigo @ Oct 21 2008, 23:42) Любой... Oct 21 2008, 20:46     demiurg_spb Попробовал на древнем:
Цитата# IAR Atmel AVR C/EC+... Oct 21 2008, 21:34        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 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|