logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kompilator skacze do definicji a nie wywołania funkcji podczas błędu[AVRStudio5]

Dr. Kuj 23 Mar 2011 18:30 1225 6
  • #1 9313491
    Dr. Kuj
    Poziom 13  
    Dlaczego kiedy klikam na błąd (w tabeli błędów) edytor przenosi mnie do definicji funkcji a nie jej wywołania? Tymbardziej że wyrzuca na przykład 10 takich samych błędów i wszystkie przenoszą mnie do definicji. Musze więc ręcznie szukać wywołań funkcji i zastanawiać się czy napewno w niej jest błąd czy może w kolejnej...
    Czy autorom nowego środowiska coś nie wyszło ? Jak było w poprzedniej wersji? lub najważniejsze: Co zrobić żeby było normalnie?
  • #3 9315165
    Dr. Kuj
    Poziom 13  
    Wątpie żeby biblioteka eeprom.h zawierała jakieś błędy...

    Problem dotyczy funkcji w istniejących już bibliotekach, nie moich własnych (bo nawet ich nie ma..)
  • #5 9316171
    kamyczek
    Poziom 38  
    Przeczytaj komentarz w funkcji , pewnie wymagane jest określenie parametrów typu wyjścia , częstotliwość zegara w obrębie biblioteki ,której używasz itp ...
  • #6 9316194
    Dr. Kuj
    Poziom 13  
    Są to błędy głównie typu:

    Error expected 'uint32_t *' but argument is of type 'int'
    Error expected 'const uint8_t *' but argument is of type 'unsigned char'

    W sumie jak sie dobrze zastanowie to chyba w WinAVR też było tak że przerzucało mnie do pliku w którym była definicja funkcji...

    Może jednak AVRStudio5 nic nie dolega.. tylko ja czegoś nie wiem.
  • #7 9316299
    poorchava
    Poziom 18  
    Generalnie wszystko zależy od kompilatora. Faktycznie, w tym przypadku prościej by było, gdyby przerzucał do wywołania funkcji - bo jak widać z błędów - problem polega na przekazywaniu jako parametr złego typu zmiennej (w zasadzie dobrego typu, ale inaczej nazwanego).

    To prawdopodobnie jest tak, że kompilator tłumacząc kod w C na język maszynowy widzi wywołanie funkcji z pewnymi zmiennymi przekazanymi do niej. Ponieważ funkcja jest w zewnętrznej bibliotece, to skacze do niej, żeby przetłumaczyć zawartość funkcji na kod maszynowy (ewentualnie sprawdzić, czy już została przetłumaczona). W tym momencie okazuje się, że funkcja przyjmuje inne parametry niz jej przekazano i występuje błąd, właśnie w pliku z definicją funkcji.

    Od razu zaznaczam, że nie wiem tego na pewno, a tylko się domyślam i kombinuję. Nie bierz tego, co napisałem jako pewnik.

    Np kompilator C# przy tego typu problemie wskazuje miejsce wywołania, nie definicji.
REKLAMA