Перейти к содержанию
    

formatted print

Доброго времени суток уважаемым.

 

Поясните плз. на какие грабли я наступил в ситуации.

 

проект на меге644па переехал с IAR5.5 на IAR 6.11.1 (месный).

до переезда вроде работало все.. ну да это к делу не относится.

в общем есть тривиальная функция печати на дисплей

 

.......................
#include <stdio.h>
#include <dlib/c/pgmspace.h>
#include <string.h>
..................................
void _put(char c,void* p)
{
    ............................
printer_t* sc = (printer_t*)p;
    ............................
char_t     symbol;
      	              symbol.data = c;
uc1601_char(sc->drv,&sc->pts,&symbol);
}
void uc1601_print(printer_t* sc,const char __flash *pcFmt,...)
{
      ................................
//! print formatted
va_list ap;
va_start(ap,pcFmt);
_formatted_write_P(pcFmt,_put,(void*)sc,&ap);
va_end(ap);
}

 

ну и xcl как то так

 

-e_PrintfSmall=_Printf
-e_small_write=_formatted_write
-e_small_write_P=_formatted_write_P

-e_ScanfSmall=_Scanf
-e_medium_read=_formatted_read
-e_medium_read_P=_formatted_read_P

 

линкуется это все с либой dlAVR-3s-ec_mul-sf-n.r90

 

в результате - получаю сообщение линкера

 

Warning[w6]: Type conflict for external/entry "_small_write_P", in module printer against external/entry in module ?_small_write_P; function types differ in parameter 4; different composite type kinds

 

а на LCD печатаются строки формата....

 

подскажите плз. в чем грабли.

 

Заранее спасибо.

Изменено пользователем IgorKossak
[code] для короткого кода

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в результате - получаю сообщение линкера

В строке

    _formatted_write_P(pcFmt,_put,(void*)sc,&ap);

Амперсанд при последнем параметре - лишний

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Амперсанд при последнем параметре - лишний

 

как ето лишний...?????

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

закрываем тему - нефига линковать и clib и dlib одновременно..

 

когда-то давно провтыкал в мейке и вписал линковку обеих либ..

и забыл закоментить. как ни странно - с более старыми версиями

линкера иаровского - канало. но вот пришло, видимо, время и

пришлось перелопатить мейк файл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...