Strona 1 z 1

MPLAB® XC Compilers V2.0 - error: variable has incomplete type 'void'

: sobota 21 lip 2018, 15:41
autor: Marcin
Cześć wszystkim.

Mam problem z kompilacją pod najnowszym kompilatorem w wersji 2.0 programu dla mikrokontrolerów PIC, w moim przykładzie dla układu PIC18F25K42, choć dla innych jest podobnie.
Szkielet programu wygenerowany przez MPLAB Code Configurator, kompilator zwraca mi błąd

mcc_generated_files/interrupt_manager.h:86:6: error: variable has incomplete type 'void'


A dotyczy linii programu

Kod: Zaznacz cały

void interrupt INTERRUPT_InterruptManager(void);


Kod: Zaznacz cały

void interrupt INTERRUPT_InterruptManager (void)
{
    // interrupt handler
    if(PIE3bits.TMR0IE == 1 && PIR3bits.TMR0IF == 1)
    {
        TMR0_ISR();
    }
    else if(PIE4bits.CCP1IE == 1 && PIR4bits.CCP1IF == 1)
    {
        CCP1_CompareISR();
    }
    else
    {
        //Unhandled Interrupt
    }
}


Kompilacja tego samego programu przez starszy kompilator przebiega pomyślnie.

Ktoś już stawił czoła takiemu przypadkowi ?

Re: MPLAB® XC Compilers V2.0 - error: variable has incomplete type 'void'

: sobota 21 lip 2018, 16:47
autor: Antystatyczny
Zerknij tutaj: https://www.microchip.com/forums/m1058706.aspx Moim zdaniem w trzecim poście jest rozwiązanie Twego problemu.

Re: MPLAB® XC Compilers V2.0 - error: variable has incomplete type 'void'

: sobota 21 lip 2018, 22:03
autor: Marcin
Antystatyczny pisze:Zerknij tutaj: https://www.microchip.com/forums/m1058706.aspx Moim zdaniem w trzecim poście jest rozwiązanie Twego problemu.

Ok, tak, to jest rozwiązanie problemu, zamiast

Kod: Zaznacz cały

void interrupt INTERRUPT_InterruptManager(void);


Musi być

Kod: Zaznacz cały

void __interrupt() INTERRUPT_InterruptManager(void);

I tak samo dla funkcji w pliku *.c

Nawet najnowszy mplab generuje kod, który jest "niestrawny" dla kompilatora w wersji 2.0