Ada/Compiler Messages
Aus StudiWiki
Hier werden (oder wird versucht) die üblichen Fehlermeldungen vom Gnu Ada Translator (GNAT) beschrieben, und, sofern man es auf eine Standardsituation zurückführen kann, ein Lösungsvorschlag gegeben.
Allgemeine Hinweise
- Wenn es mehrere Fehlermeldungen sind sollte man nur den ersten betrachten und korrigieren. Oft verursacht ein kleiner Fehler viele Folgefehler die dann wieder verschwinden, wenn man den kleinen Fehler korrigiert hat.
- mit der option -gnatf kann man GNAT veranlassen, detailreichere Fehlermeldungen auszugeben. Kann aber beispielsweise bei Parameterfehlern dazu führen, dass die Fehlerliste sehr lang wird
foobar.adb:17:03: "put" is undefined foobar.adb:17:03: possible missing with of Text_IO
In der Regel fehlt das Paket Ada.Text_IO. Oder wenn man nur ein Integer ausgeben will, dann fehlt das Paket Ada.Integer_Text_IO. Ist es ein float, dann fehlt Ada.Float_Text_IO.
foobar.adb:18:03: invalid parameter list in call (use -gnatf for details) foobar.adb:18:03: possible missing instantiation of Text_IO.Integer_IO
In der Regel fehlt das Paket Ada.Integer_Text_IO oder Ada.Float_Text_IO. Sind Ada.Integer_Text_IO oder Ada.Float_Text_IO schon eingebunden, dann fehlt Ada.Text_IO.
foobar.adb:22:11: expected type "Standard.integer" foobar.adb:22:11: found a string type
Eine Funktion oder eine Prozedur wurde mit falschen Parametern aufgerufen. In diesen Fall wollte die Funktion einen Integer haben, bekam aber einen String.
foobar.adb:65:03: expect procedure name in procedure call
Eine Funktion wurde wie eine Prozedur aufgerufen. Das heißt, der Rückgabewert wurde nicht berücksichtigt.
- falsch:
Funktionsaufruf(Parameter); - richtig:
Variable := Funktionsaufruf(Parameter);
foobar.adb:16:17: anonymous arrays not allowed as components
In einem Record wurde ein "anonymous Array" deklariert.
Ein "anonymous Array" ist ein Array, der einfach so deklariert wurde
Foo : Array(1..10) of Integer;
Wenn man erst ein Typ definiert, und dann eine Variable von diesem Typ deklariert, dann ist es nicht mehr anonym (denn der Arraytyp hat jetzt einen Namen).
type Bar_Type is array (integer range <>) of Integer; Foo : Bar_Type (1..10);
Jetzt kann man Foo : Bar_Type als array auch in einem Record benutzen
"Unbounded_String" is not visible
Ada.Strings.Unbounded wurde nicht eingebunden
raised ADA.IO_EXCEPTIONS.NAME_ERROR : s-fileio.adb:811
Diese Fehlermeldung kommt zur Laufzeit, wenn auf eine Datei zugegriffen wird, die nicht existiert.
