Ada/Compiler Messages

Aus StudiWiki

< Ada
Wechseln zu: Navigation, Suche

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.


Persönliche Werkzeuge