SA0016: Lücken in Strukturen

Funktion

Ermittelt Lücken in Strukturen oder Funktionsbausteinen, verursacht durch die Alignment-Anforderungen des aktuell eingestellten Zielsystems. Wenn möglich, sollten Sie die Lücken durch Umsortieren der Strukturelemente oder durch Auffüllen mit einem Dummy-Elemententfernen. Wenn dies nicht möglich ist, dann können Sie die Regel für die betroffenen Strukturen durch das Attribut {attribute 'analysis' := '...'} deaktivieren.

Begründung

Durch unterschiedliche Alignment-Anforderungen auf verschiedenen Plattformen, kann es für solche Strukturen zu einem unterschiedlichen Layout im Speicher kommen. Der Code kann sich dann je nach Plattform unterschiedlich verhalten.

Wichtigkeit

Niedrig

Beispiele:

TYPE ST_UnpaddedStructure1 :
STRUCT
    bBOOL  : BOOL;
    nINT   : INT;                // => SA0016
    nBYTE  : BYTE;
    nWORD  : WORD;
END_STRUCT
END_TYPE
TYPE ST_UnpaddedStructure2 :
STRUCT
    bBOOL  : WORD;
    nINT   : INT;
    nBYTE  : BYTE;
    nWORD  : WORD;               // => SA0016
END_STRUCT
END_TYPE