Skip to main content

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 Enumerationstypen

  • Kopieren 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)