Gab / gibt es da nicht eine Warnung im Compiler, wenn man auf eine Temp-Variable lesend zugreift und diese vorher nicht beschrieben wurde?
Warum das eingeführt wurde weiß ich auch nicht (vor allem, warum zwei verschiedene Verhalten ).
Ein Compiler soll doch die Unfähigkeit der Programmierer aufspüren und davor schützen. Nur sind nicht alle FehlerMöglichkeiten für einen Compiler gleich leicht aufzufinden oder so offensichtlich, dass eine Warnung eindeutig fällig wäre.
Ich glaube, gewünscht hat sich schon so mancher eine entsprechende Meldung. Und so mancher CompilerBauer hat schon versucht oder zumindest überlegt, auf solche Wünsche einzugehen.
Ich behaupte mal, so richtig konsequent geht es nur mit (zu) viel Aufwand, wenn das zu prüfende Programm mit Sprüngen/Verzweigungen versehen ist, die den Überblick erschweren.
Warum Siemens dieses völlig überflüssige Initialisieren der TEMP-Variablen für die S7-1200/1500 eingeführt hat??? Es gibt wohl zu viele TIA-"Programmierer" mit dieser Wissenslücke....
Das Problem betrifft ja nicht nur TIA-Programmierer und nicht nur Programmierer mit dieser Wissenslücke.
Diese FussAngel ist eigentlich sehr bekannt und trotzdem passiert es immer wieder mal, dass einer ins offene Messer läuft, egal auf welchem Wege (z.B. nachträglich durch überstürzt ausgeführtes Auskommentieren).
Es ist ein Fehler, der tatsächlich lange Zeit unerkannt in der Software schlummern kann oder sich u.U. nie bemerkbar macht.
Die häufig zitierte Zufälligkeit bei der Vorbesetzung der Werte von TempVariablen ist oft sehr gut reproduzierbar innerhalb ein und desselben Programms und somit recht "stabil". Dies gilt insbesondere für SPS-Programme, in denen so manches bewusst vermieden wird, was zu "Überraschungen" führen kann.
Beispielhaft fallen mir in diesem Zusammenhang immer je ein Stückchen StandardSoftware von Fanuc (Sprache C) und von Siemens (S5) ein. Letzteres war schwer zu entlarven, weil dazu zunächst der KnowHowSchutz "geknackt" werden musste.
Shit happens und kann auch in den "besten Familien" vorkommen.