in Fortran 95, wenn Sie eine Variable bei der Deklaration zuweisenFortran Zuordnung auf Erklärung und SAVE-Attribut gotcha
integer :: var = 0
es
integer, save :: var = 0
äquivalent ist, und die Variable daher nach Routineausführung erhalten ist (entspricht static
in C speak) und wird beim erneuten Aufruf nicht neu initialisiert. Was ist das Grundprinzip/technische Problem hinter einem solchen (IMHO gefährlichen) Verhalten?
Der Vollständigkeit halber sei erwähnt, dass in der Norm Fortran 2003 der von Ihnen erwähnte Punkt in C1107 behandelt wird: "Wenn im Spezifikationsteil ein Objekt eines Typs angegeben ist, für den die Komponenteninitialisierung (R444) angegeben ist eines Moduls und nicht über das Attribut ALLOCATABLE oder POINTER verfügt das Objekt über das Attribut SAVE. ". –
@Alexandros Gezerlis - Richtig, aber er fragt "Warum" haben sie die Dinge so gemacht, und jetzt, da ich seine Frage verstehe, habe ich auch die gleiche Frage :). – dcp
Ich weiß, deshalb habe ich das nicht als Antwort gepostet. –