Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR C++ ostream трабла
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
segment
Нужно было быстро наваять дебаг небольшой, начал скрябать с++ и естественно заюзал ostringstream, нормально скомпилилось и прошилось.
Собсно сама проблема - в ostream лезут только строки, а вместо целочисленных значений появляется один символ..
Вот к примеру вывод строки - нормально, выводит.
Код
ostringstream ost;
ost << "Hello, world!";
*uart << ost.str() << endl;

Вот решил сконвертировать значение в строку
Код
ostringstream ost;
ost << 12345;
*uart << ost.str() << endl;

Оператор то перегружен для такой операции, но вот вместо ожидаемого "12345" в консоли - я вижу "d", ну само собой понятно что d это dec, я пытался вывести в шестнадцатиричном - получал "h".. что нужно переопределить то для работы корректной?
HARMHARM
Немного офф.
А почему через stream? Я понимаю - с++, сам на нём пишу, но мне кажется, что printf куда гибче.
Я делаю так:
Есть глобальная функция:
Код
void debugPrintf( char *arg_list, ...);

Есть файл конфигурации проекта в котором написано:
Код
#ifndef    RELEASE
    #define USE_DEBUG(...)              debugPrintf(__VA_ARGS__)
    #define USE_DEBUG_IAP(...)          debugPrintf(__VA_ARGS__)
#endif

После этого в каждом файле где нужна отладка:
Код
#ifndef USE_DEBUG_IAP
    #define USE_DEBUG_IAP(...)
#else
extern void debugPrintf( char *arg_list, ...);
#endif

Потом в коде:
Код
    if ( iap(FLASH_READ_BOOT_CODE_VERSION, 0, 0, 0, 0) ) USE_DEBUG_IAP("Error reading boot code version\n");
    else USE_DEBUG_IAP("Boot code version: %d.%d\n", (uint8_t) (iap_res[1]>>8), (uint8_t) iap_res[1]);

И всё. Дебаг включается/выключается автоматически по опциям. Одна строчка в коде, никаких #ifdef кроме как в начале.
Вывод всего чего угодно.
IgorKossak
Банальный CppTutor.cpp из папки tutor тем не менее работает. Может натолкнёт на мысли простое сравнение опций проекта.
segment
2HARMHARM: то что я привел это просто тест. А дебаг у меня - отдельный кольцевой буффер с сообщениями, при необходимости который я вывожу. Ну и так далее..

Спасибо, я тупо забыл выставить настройку библиотек. У меня просто стояло None, естественно он у меня отрезал тот метод конвертирования строк.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.