Compilerwarnung C0354
Meldung: Vergleich eines Enumerationstyps (<type name 1>) mit einem anderen (<type name 2>)
Möglich Fehlerunrsache: Es werden Enumerationstypen in Vergleichsoperatoren verwendet.
Fehlerbehebung:
Verwenden Sie in Ihrem Programmcode vordefinierte Ganzzahl-Datentypen (beispielsweise
INT
) anstelle der EnumerationstypenKopieren Sie die Werte der Enumerationsvariablen in Hilfsvariablen um (beispielsweise
INT
-Variablen) und verwenden Sie die Hilfsvariablen im Vergleichsoperator
Beispiel 468. Beispiel für die Warnung
{attribute 'qualified_only'} {attribute 'strict'} TYPE ENUM1: ( enum_member1 := 0, enum_member2 := 1 ); END_TYPE {attribute 'qualified_only'} {attribute 'strict'} TYPE ENUM2: ( enum_member := 0 ); END_TYPE PROGRAM PLC_PRG VAR enum1 : ENUM1; enum2 : ENUM2; i:INT; END_VAR enum1 := 0; enum2 := 0; IF enum1 > enum2 THEN i := 1; END_IF;
Die IF
-Anweisung produziert die folgende Warnung.
Meldung:
C0354: Vergleich eines Enumerationstyps (ENUM1) mit einem anderen (ENUM2)