Skip to main content

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.

Exemple 31. Exemple
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:

  • sa_icon_message.png SA0018 : Accès aux bits inhabituel