Skip to main content

SA0019 : Conversions de pointeurs implicites

Détecte les conversions de pointeur générées implicitement

Justification : Dans CODESYS, les pointeurs ne sont pas strictement saisis et peuvent être attribués les uns aux autres de n'importe quelle manière. Ceci est souvent utilisé et n'est donc pas indiqué par le compilateur. Cependant, cela peut également entraîner un accès non autorisé et inattendu. Par exemple, si vous attribuez le type POINTER TO DWORD vers un pointeur avec le type POINTER TO BYTE, la mémoire peut être écrasée de manière indésirable.

Par conséquent, vérifiez toujours cette règle et bloquez le message uniquement dans les cas où vous souhaitez intentionnellement accéder à une valeur d'un type différent.

Conversions depuis et vers le POINTER TO BYTE les types de données ne sont pas vérifiés par la règle SA0019. Ils sont toujours autorisés.

Les conversions de type de données implicites sont signalées avec un message différent.

Importance : Élevée

Règle PLCopen : CP25

Exception: BOOL <-> BIT

Exemple 54. Exemple
PROGRAM PLC_PRG
VAR
    pInt : POINTER TO INT;
    byteVar : BYTE;
END_VAR
pInt := ADR(byteVar);

Sortie dans le messages voir:

  • sa_icon_message.png SA0019 : Conversion implicite du pointeur vers 'POINTER TO BYTE' en pointeur vers 'POINTER TO INT'