Bandi Szasz Postat Februarie 6, 2021 Partajează Postat Februarie 6, 2021 (editat) Acum 24 minute, bcristian a spus: Nu functioneaza asa, sau nu daca compilatorul functioneaza conform specificatiilor c/c++ :D Asignarea face cast la tipul membrului a carui valoare se seteaza, nu scrie in memorie incepand de acolo ce valoare ii dai. Exact asa functioneaza... daca nu ma crezi e interesant de incercat. Mi-au iesit fire albe pe un ESP32, aveam un struct care continea un array si niste variabile, array-ul era definit cu 4 elemente in loc de 5 (greseala) ghici ce se intampla cand codul scria in array pe pozitia 5 ? Se baga peste variabilele declarate dupa (uint16_t) si ma miram ce se tot intampla ca dupa umplerea array-ului se buleau variabilele de langa, de fapt lua valoarea care era scrisa in "array" pe pozitia 5. Arduino IDE este de toate numai ceva "profi" nu, in anumite cazuri se comporta aiurea. Editat Februarie 6, 2021 de Bandi Szasz Link spre comentariu
Liviu M Postat Februarie 6, 2021 Partajează Postat Februarie 6, 2021 @Bandi: in cazul tău e clar problemă de programator, la Gilbert Sparios compilatorul pare sa bata câmpii. Asta dacă nu e cumva tot o problemă de indecși, că nu vedem tot codul, nu știm unde se oprește i. Link spre comentariu
bcristian Postat Februarie 6, 2021 Partajează Postat Februarie 6, 2021 (editat) @Bandi Szasz La folosirea de indexi aiurea in array-uri clasice nu te protejeaza limbajul, si efectul la care te referi e normal. Valabil si pentru jonglerii gresite cu pointeri. struct A { uint16_t a, b; }; A a; a.b = 0x2222; a.a = 0x1ABCD; // iti da warning, la runtime a.a va fi 0xABCD, a.b va fi tot 0x2222 auto *p = (uint32_t*)&a.a; // in functie de optiuni, te poti alege cu warning si la asta *p = 0x1ABCD; // nedefinit de standard, dar cel mai probabil te vei alege cu a.a = 0xABCD, a.b = 0x0001 // Daca faci jongleria cu variabile locale in loc de membri in structura, rezultatul (tot nedefinit de standard) depinde de compilator. @Gilbert Sparios stii ca indexii valabili intr-un array byte b[10] sunt de la 0 la 9, da? Editat Februarie 6, 2021 de bcristian Link spre comentariu
Gilbert Sparios Postat Februarie 6, 2021 Autor Partajează Postat Februarie 6, 2021 absolut da. imi trebuie packet pentru ca fac CRC16 ... si nu merge fara o structura cunoscuta. sunt mai multe platforme...in fine.. important ca merge asa cum e. ce spunea bandi acolo mi s-a intamplat si mie la inceput, ceva de genul ca am pus un egal intr-un for for .... (i<=x) si aia a fost suficient dar nu e cazul acum.. Link spre comentariu
Gilbert Sparios Postat Februarie 7, 2021 Autor Partajează Postat Februarie 7, 2021 Am verificat `suprapunerea` in IDE 1.0.6 si nu face măgarii. Am dezinstalat versiunea curenta si.. vad ca e ok si aici. deja e mult minim a doua oară când ceva are.. Oricum doar pentru compilare.. ca restul e notepad++ Am încercat o tona de editoare.. nu pot sa ma împac decât cu Notepad. 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