Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Dlaczego "x" w deklaracji "struct" nie jest typu całkowitego

checumis 11 Cze 2013 19:46 3003 7
  • #1 11 Cze 2013 19:46
    checumis
    Poziom 7  

    Hej,
    moje pytanie odnosi się do załaczonej linijki kodu :

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Nie do końca rozumiem, co ma na myśli kompilator wyrzucając bład:
    "filed 'x' has incomplete type".
    Czy ktoś z bardziej doświadczonych programistów mógłby wytłumaczyć mi dlaczego deklaracja struct jest błędna?
    Pozdrawiam serdecznie wszystkich forumowiczów.

    0 7
  • #2 11 Cze 2013 20:48
    kopek11111
    Poziom 17  

    A przypadkiem struktura nie powinna być zdefiniowana poza funkcją main?

    0
  • #3 11 Cze 2013 20:52
    Krzysztof Gustaw
    Poziom 23  

    Witam!
    Aj, aj, aj,
    A co w języku C czy C++ oznacza średnik?
    Zauważyłem też brak przecinka w pewnym miejscu...
    No cóż, Ciebie usprawiedliwia to, że jesteś początkujący. Mój Wykładowca ciągnął takich uczniów za ucho i mówił: Idź się, synciu, poucz... PAŁA!!!!!
    Są to rzeczy TRYWIALNE
    P.S.
    Ale nie przejmuj się, początki są zawsze trudne jak też NIE OD RAZU KRAKÓW ZBUDOWANO!!!

    0
  • Pomocny post
    #4 11 Cze 2013 21:11
    Bielak_solid
    Poziom 14  

    1. Nie możesz zamieszczać statycznej struktury, którą deklarujesz w niej samej. Poprawny będzie zapis:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    jednakże wówczas x jest wskaźnikiem na strukturę typu X. Dzięki temu kompilator jest w stanie określić rozmiar całej struktury. W przypadku statycznej zmiennej występuje problem z nieskończoną rekurencją podczas obliczania rozmiaru na poziomie kompilacji.

    0
  • #5 11 Cze 2013 22:20
    krru
    Poziom 32  

    Ja przypuszczam, że chodzi o deklarację zmiennej x typu X. Trzeba przestawić }.

    0
  • #6 13 Cze 2013 09:00
    2P
    Poziom 19  

    Bielak_solid napisał:
    Poprawny będzie zapis:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    jednakże wówczas x jest wskaźnikiem na strukturę typu X...

    Tak też niestety nie można. Dla opisanego przypadku poprawny będzie zapis:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #7 13 Cze 2013 13:00
    szelus
    Specjalista - Mikrokontrolery

    Tak, to by było w C. To jest kod w C++, więc zapis "X *x;" jest jak najbardziej poprawny.

    0