cirip Postat Mai 28, 2006 Partajează Postat Mai 28, 2006 Salut,Incerc sa definesc si sa initializez o structura la compile time in IAR Embedded Workbench pentru MSP430. Ar trebui sa fie ceva banal, dar ma poticnesc la faptul ca daca vreau sa accesez un membru al structurii, compilatorul face scandal. Iata mai in detaliu:struct s{ int x; int y; };struct s s1[] = { 10, 20 };int c;int main( void ){ c=s1.x; //Aici marcheaza ca EROARE!! return 0;}La linia cu EROARE, compilatorul se vaicareste cum ca:Error: expression must have struct or union typeM-am uitat in K&R si mie mi se pare ca accesarea membrului structurii e corecta, dar poate imi scapa ceva. Ma poate ajuta cineva?Multumesc,Cirip Link spre comentariu
psanyi Postat Mai 28, 2006 Partajează Postat Mai 28, 2006 struct s s1[] = { 10, 20 }; Problema este aici . Ai creat un tabel de structuri si compilatorul crede ca doresti sa initializezi un tabel cu structuri. Daca doresti o singura structura initializata, ar veni cam asa struct s{ int a; int b;};struct s sx = { 10,20 };int c;int main(void){ c = sx.a; c = sx.b; return 0;} Link spre comentariu
psanyi Postat Mai 28, 2006 Partajează Postat Mai 28, 2006 Da, scuze uitasem si a doua varianta cand doresti sa initializezi o tabela de structuri prin alocare statica. struct s{ int a; int b;};struct s sx[] = { {10,20}, {15.22}};int c;int main(void){ c = sx[1].a; c = sx[2].b; return 0;} Am pus parantezele in asafel sa intelegi despre ce este vorba. Sper ca ti-a fost de folos. Succes ! EDIT: "tabela de structuri" = matrice de structuri Link spre comentariu
cirip Postat Mai 28, 2006 Autor Partajează Postat Mai 28, 2006 Da, merg ambele variante, multumesc psanyi.Daca inteleg bine, motivul ptr care nu mergea este ca initializam o structura cu mai multi membri (tabela de structuri, cum o denumesti tu), dar accesul il faceam ca si cum aveam numai un membru al structurii si compilatorul nu stia pe care sa il aleaga (desi era numai unul singur).Eu credeam ca daca nu specific size in interiorul "[]" ar trebui sa isi dea seama din initializare ca am un singur membru si sa-l acceseze pe ala, atunci cand fac asignarea c=sx.a;Inca o data, multumesc. MergeCirip Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum