Vai al contenuto

Valore di ritorno operatore SIZEOF

Home Forum Programmazione IEC 61131 (LogicLab) Valore di ritorno operatore SIZEOF

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #34874
    Paolo
    Partecipante

    Ho una piccola perplessità sul valore ritornato dall’operatore SIZEOF. Ho dichiarato una struttura che contiene 15 WORD. Perchè l’operatore mi ritorna un valore di 32 e non 30 ?

    #38288
    Sergio Bertana
    Amministratore del forum

    Per capire il valore di ritorno dell’operatore SIZEOF occorre fare riferimento alla architettura del sistema, in un sistema ARM come lo SlimLine le variabili a 2 bytes sono allineate ad indirizzi divisibili per 2, mentre le variabili a 4 bytes sono allineate ad indirizzi divisibili per 4. Siccome una struttura può contenere dati disomogenei tra di loro (BOOL, BYTE, WORD, REAL, ecc) il compilatore di LogicLab alloca alla struttura una dimensione in byte pari al valore superiore divisibile per 4. Nel tuo caso i 30 bytes diventano 32, e se tu provassi a fare la struttura di 14 WORD (Quindi 28 bytes) essendo il valore divisibile per 4 SIZEOF ritornerebbe esattamente 28.

    Consiglio, nella definizione delle strutture conviene sempre manualmente allineare la dimensione ad un valore  divisibile per 4 aggiungendo delle variabili Dummy (Vedi screenshot). Ulteriori informazioni su questo argomento le trovi in questo topic.

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.