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

 
 
> intToStr в WinARM, То ли я тупой, то ли лыжи не едут
mr.smart
сообщение Jan 31 2011, 18:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 2-10-10
Пользователь №: 59 884



Си.
Есть integer, нужно перевести в char[5]. Вроде детская задачка... В "нормальных" компиляторах решал ее с помощью функции itoa которая из библиотеки stdlib.h, но почему-то WinARM напрочь отказывается эту функцию воспринимать. Попробовал sprintf, выводит кучу ошибок не понятно чего:

Код
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/thumb/interwork\libc.a(freer.o): In function `_malloc_trim_r':
mallocr.c:(.text+0x2c): undefined reference to `_sbrk_r'
mallocr.c:(.text+0x3c): undefined reference to `_sbrk_r'
mallocr.c:(.text+0x48): undefined reference to `_sbrk_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/thumb/interwork\libc.a(makebuf.o): Infunction `__smakebuf':
makebuf.c:(.text+0x1c): undefined reference to `_fstat_r'
makebuf.c:(.text+0xb2): undefined reference to `isatty'


Как решить данную задачу?

P.S. К Программистам себя не отношу, поэтому палками прошу не бить. Самому стыдно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mr.smart
сообщение Feb 4 2011, 14:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 2-10-10
Пользователь №: 59 884



Цитата
Похоже, что не прилинкована какя-то библиотека.

Тут я просто несколько не шарю. Есть файлик stdlib.h. Скачал, положил куда надо и указываю в начале программы через #include. Но вот где должен находится файлик stdlib.с и где его вообще найти я, честно скажу, нивкурил. В интернетах ничего не нашел по этому поводу, предположил что это всё где-то во внутренностях компилятора... Если объясните как тут всё это работает с этими библиотеками, буду признателен.

Цитата
А взять исходник функции itoa() и прямо подцепить к проекту религия не позволяет?

Когда посмотрел как делает народ, все-таки решил написать такую функцию самостоятельно. Поначалу думал что проще будет со стандартной библиотекой.

Цитата
Один из вечных вопросов. Может, данная дискуссия поможет

Да, помогла) Понял, что мой вопрос был не таким уж и тупым, и многие с этим вопросом сношаются. Код господина aaarrr заинтересовал, но я там ниче не понял) Буду еще разбираться конкретно с ним.


Сама функция перевода в string мне понадобилась кратковременно, чтобы в гипертерминал выводить содержимое флеш-памяти (как раз учусь щас с ней работать), а функция вывода требует исключительно тип char[]. Поэтому к максимальной производительности не стремился, написал функцию на скорую руку. Работает. Беременным детям и женщинам не смотреть!
Код
val = 0xFE; //это надо перевести в buf, который представляет из себя char[2]...
length = 2; // 1 байт в слове
do {
    c = val % 0x10 + '0';
    val /= 0x10;
    buf[len] = c;
    //6 последующих строк меня ПРАВДА вынудил писать компилятор!) Ибо программа никак не хотела нормально работать при:
    //if (buf[len] < 0x3A) {
    //    buf[len] = c;
    //} else {
    //    buf[len] = c+0x7;
    //}
    // К тому же переменная [b]с[/b] в данном месте почему-то всегда определялась как 0х0. Хотя при выводе buf после цикла все было норм...
    if (buf[len] == ':') buf[len] = 'A';
    if (buf[len] == ';') buf[len] = 'B';
    if (buf[len] == '<') buf[len] = 'C';
    if (buf[len] == '=') buf[len] = 'D';
    if (buf[len] == '>') buf[len] = 'E';
    if (buf[len] == '?') buf[len] = 'F';
    len++;
} while (len < length);


Короче говоря пока учусь работать с flash, мне этого достаточно. Когда придет время писать программу уже непосредственно для вывода чего-то, то буду разбираться уже серьезно.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 6 2011, 09:23
Сообщение #3


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

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



Цитата(mr.smart @ Feb 4 2011, 17:58) *
Есть файлик stdlib.h. Скачал, положил куда надо и указываю в начале программы через #include.
Но вот где должен находится файлик stdlib.с
Нигде:-) обычно идёт в составе скомпилированной библиотеки в libc. (для avr это avr-libc например).
Тут ещё такое дело, некоторые функции могут отсутствовать т.к. они не являются стандартными.
Чтобы понять какие, надо ознакомиться со стандартом...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mr.smart   intToStr в WinARM   Jan 31 2011, 18:16
- - kurtis   Покажите код   Feb 1 2011, 09:31
|- - demiurg_spb   Дело не в коде... Похоже, что не прилинкована какя...   Feb 1 2011, 09:47
- - ViKo   Цитата(mr.smart @ Jan 31 2011, 20:16) Как...   Feb 1 2011, 09:46
- - XVR   Судя по ругани ваш sprintf попытался использовать ...   Feb 1 2011, 09:58
- - sergeeff   А взять исходник функции itoa() и прямо подцепить ...   Feb 1 2011, 13:22
|- - sergeeff   Цитата(mr.smart @ Feb 4 2011, 18:58) Когд...   Feb 6 2011, 19:10
|- - ViKo   Цитата(sergeeff @ Feb 6 2011, 21:10) Увад...   Feb 7 2011, 07:38
|- - sergeeff   Цитата(ViKo @ Feb 7 2011, 11:38) Уважаемы...   Feb 7 2011, 09:44
|- - ViKo   Цитата(sergeeff @ Feb 7 2011, 11:44) Под ...   Feb 7 2011, 10:03
|- - sergeeff   Цитата(ViKo @ Feb 7 2011, 14:03) В книжка...   Feb 7 2011, 10:12
|- - ViKo   Цитата(sergeeff @ Feb 7 2011, 12:12) В лю...   Feb 7 2011, 10:18
|- - sergeeff   Цитата(ViKo @ Feb 7 2011, 14:18) Я вот - ...   Feb 7 2011, 11:15
|- - demiurg_spb   Цитата(sergeeff @ Feb 7 2011, 14:15) Дал ...   Feb 9 2011, 10:33
- - Genadi Zawidowski   Может быть, Вам поможет этот файлик...   Feb 6 2011, 18:36


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:25
Рейтинг@Mail.ru


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