SA0018 : Accès inhabituel aux bits
Détecte l'accès aux bits aux variables signées. Cependant, la norme CEI 61131-3 autorise uniquement les opérations d'accès aux bits et de décalage de bits sur les champs de bits.
Voir aussi les règles strictes SA0147 et SA0148.
Justification : Les types de données signés ne doivent pas être utilisés comme champs de bits et inversement. La norme CEI 61131-3 ne prévoit pas ce type d'accès, et vous devez donc vous conformer à cette règle lorsque vous écrivez du code portable.
Importance : Moyenne
Astuce
Exception pour les énumérations de drapeaux : lorsqu'une énumération est déclarée comme drapeau au moyen de la {attribute 'flags'}
l'attribut pragma, l'attribut SA0018
l'erreur n'est pas émise pour l'accès au bit avec le OR
, AND
ou NOT
les opérateurs.
PROGRAM PLC_PRG VAR iTemp1 : INT; diTemp3 : DINT; uliTemp4 : ULINT; siTemp5 : SINT; usiTemp6 : USINT; byTemp2 : BYTE; END_VAR
iTemp1.3 := TRUE; //SA0018 diTemp3.4 := TRUE; //SA0018 uliTemp4.18 := FALSE; //no error because this is an unsigned data type siTemp5.2 := FALSE; //SA0018 usiTemp6.3 := TRUE; //no error because this is an unsigned data type byTemp2.5 := FALSE; //no error because the byte is a bitfield
Sortie dans le messages voir:
SA0018 : Accès aux bits inhabituel