De felmeddelanden som Ada-kompilatorn GNAT producerar brukar oftast vara mycket informativa. Det finns dock vissa fel vars orsak brukar vara svår att lista ut och sådana fel finns samlade i detta dokument. Detta är alltså en sammanställning över ovanliga och obegripliga fel som du kan konsultera om du inte riktigt förstår vad GNAT menar.
Experimentera inte med student-modulen eller andra fönstersystem än CDE om du inte är väldigt säker på vad du gör.
Om man laddar in någon av modulerna misc/student-before
eller misc/student-after
kommer gnatmake
att
använda fel version av gcc
vilket resulterar i nedanstående
obegripliga fel. Felet kan också uppstå om man installerar andra
fönstersystem än CDE.
|
GNAT använder sig av C-kompilatorn gcc
, men det finns
flera olika installationer av gcc i systemet. För att GNAT ska fungera
måste den gcc
användas som följer med GNAT. Man kan lätt
kontrollera vilken gcc
man använder genom att skriva
which gcc
. Om svaret blir /sw/gnat-3.13/bin/gcc
bör du inte få några problem. Om svaret däremot blir
/student/bin/gcc
uppstår ovanstående problem. Du kan också
kontrollera sökvägarna genom att t.ex. skriva echo &PATH
.
I sökvägarna måste GNAT-katalogen ovan komma före student-katalogen.
För att lösa problemet ser man till att alltid använda
misc/student-after
och se till att den laddas sist av
modulerna. Det senare kräver ibland manuell editering av filen
.login
. Om felet beror på att du installerat ett annat
fönstersystem än CDE får du själv försöka lösa problemet. Om du inte
förstår varför ovanstående fel uppstår bör du definitivt inte använda
något annat fönstersystem än CDE.
Identifierare (däribland namnet på huvudproceduren) får inte börja med en siffra.
I normala fall är GNAT inte så petig med hur källkoden ser ut. Oftast kan man ju utgå från att Ada-läget i Emacs ser till att koden snyggas till. Nedanstående hysteriskt fula program är dock inga problem att kompilera.
sjutton.adb
|
|
Om vi däremot byter namn på filer (och huvudproceduren) till något som börjar med en siffra uppstår mystiska problem.
17.adb
|
|
I körexemplet nedan ser vi hur GNAT i det senare fallet klagar
högljutt på style. Tydligen har namnet med siffran i början
orsakat att flaggan -gnatpg
skickas till gcc
.
I och för sig är det ogiltigt att kalla ett program för något som
börjar med en siffra, eftersom en identifierare enligt specifikationen
ska börja med en bokstav. Dock kan man tycka att GNAT kunde meddela
detta istället för att gå in i något slags pedantic mode.
|
Filnamn måste bestå av enbart små bokstäver, även underprogram.
Vi antar att vi vill dela upp vårt program i flera filer. I vårt huvudprogram (se exempel nedan) inkluderar vi ett underprogram som finns i en separat fil.
huvudprogram.adb
|
|
Vårt underprogram ligger i filen Underprogram.adb
som vi
felaktigt och mot alla konventioner har namngivit med en versal i början.
Underprogram.adb
|
|
Man skulle kunna tro att GNAT skulle klara av att hitta underprogrammet
ändå, eftersom stora/små bokstäver egentligen inte spelar någon roll.
Istället kastar GNAT ur sig följande obegripliga meddelande, vilket brukar
få folk att skapa konstiga .ads
-filer helt i onödan.
|