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

 
 
> Знатоки GCC, подскажите в чем фокус
Sirko
сообщение Nov 28 2010, 22:24
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795



в h-файле определение класса
Код
class LCD_HD44780{
public:
    typedef struct {
        u08    amountCell                :4;    //    Задает требуемое кол-во знакомест на дисплее
        u08    amountOfSignsAfterPoint    :3;    //    Задает кол-во знаков после запятой, необходимое для отображения
        bool    alignRight                :1;    //    Если true, значит выравнивание по правому краю
    }ModePrintDigit;
public:
    LCD_HD44780(OS::TMutex* pMutex) : mutex(pMutex){cursorMode = BIN8(01101100);}

    *    
    *    
    *

    void printDigitToPosition(u08 x, u08 y, float digit, ModePrintDigit mode);

    *    
    *    
    *

private:
    void setAddress(u08 address);
    void sendCommand(u08 command);
    OS::TMutex* mutex;
    u08 cursorMode;
    ModePrintDigit modePrintDigit;

};


в cpp-файле реализация метода
Код
void LCD_HD44780::
printDigitToPosition(u08 x, u08 y, float digit, ModePrintDigit mode){
//    mode.amountOfSignsAfterPoint = 2;
    bool signNegative;
    float factor = pow(10, mode.amountOfSignsAfterPoint);
    u16 _digit;
    if(digit < 0){
        signNegative =  true;
        _digit = ((-1.0F) * digit * factor) + 0.5F;
    }else{
        signNegative =  false;
        _digit = (digit * factor) + 0.5F;
    }

    if(mode.alignRight){
        while(mode.amountCell--){
            if(!_digit)
                break;
            _digit /= 10;
        }
    }
}


При компиляции выскакивает во такая вот зараза:
Цитата
Build started 29.11.2010 at 00:12:47
======== Beginning of project SMHProjectAVRGCC processing
avr-gcc.exe (WinAVR 20100110) 4.3.3
Copyright © 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

==== Link to SMHProjectAVRGCC.elf
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr51\libc.a(floatsisf.o): In function `__floatunsisf':
(.text.avr-libc.fplib+0x0): multiple definition of `__floatunsisf'
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr51\libgcc.a(_usi_to_sf.o):c:\avrdev\gcc\build-avr\avr\avr51\libgcc/../../.././gcc/fp-bit.c:1391: first defined here
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr51\libc.a(log.o): In function `log':
(.text.avr-libc.fplib+0x46): relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr51\libgcc.a(_addsub_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr51\libc.a(log.o): In function `log':
(.text.avr-libc.fplib+0x4e): relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr51\libgcc.a(_addsub_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr51\libc.a(pow.o): In function `pow':
(.text.avr-libc.fplib+0x94): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr51\libgcc.a(_mul_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr51\libc.a(modf.o): In function `modff':
(.text.avr-libc.fplib+0x3e): relocation truncated to fit: R_AVR_13_PCREL against symbol `__subsf3' defined in .text section in c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr51\libgcc.a(_addsub_sf.o)
make: *** [exe/SMHProjectAVRGCC.elf] Error 1
Build failed with 1 errors and 0 warnings...

Если раскоментировать строку
// mode.amountOfSignsAfterPoint = 2;
ошибка пропадает.

Если закоментировать строку
if(!_digit)
ошибка пропадает.

Если убрать строки
_digit = .....
ошибка пропадает.

Где логика? laughing.gif

Makefile взят из примера операционки scmRTOS
Go to the top of the page
 
+Quote Post



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

 


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


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