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

Tu możesz pisać o swoich problemach z pisaniem programów w języku C dla PIC.
Awatar użytkownika
Marcin
User
User
Posty: 163
Rejestracja: środa 09 wrz 2015, 19:30

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

Postautor: Marcin » sobota 21 lip 2018, 15:41

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 ?

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1096
Rejestracja: czwartek 03 wrz 2015, 22:02

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

Postautor: Antystatyczny » sobota 21 lip 2018, 16:47

Zerknij tutaj: https://www.microchip.com/forums/m1058706.aspx Moim zdaniem w trzecim poście jest rozwiązanie Twego problemu.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
Marcin
User
User
Posty: 163
Rejestracja: środa 09 wrz 2015, 19:30

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

Postautor: Marcin » sobota 21 lip 2018, 22:03

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


Wróć do „Programowanie PIC w C”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość