I programmeringsspråk innehåller en deklaration ( engelsk declaration ) en indikation på en identifierare , typ , såväl som andra aspekter av språkelement, såsom variabler och funktioner . Deklarationen används för att meddela kompilatorn att ett element finns; detta är ganska viktigt för många språk (som C , till exempel ) som kräver att variabler deklareras innan de kan användas.
I BCPL- familjen av språk , där C++ och Java är medlemmar , kan du också ange storleken på en variabel när du deklarerar en skalär typ, matris eller matris. I denna familj kan deklarationer (meddelande om existens och egenskaper hos ett element) och definitioner (som ger direkt själva implementeringen ) specificeras oberoende av varandra. Deklarationer anges i allmänhet i rubrikfiler , som sedan inkluderas i andra filer som hänvisar till dem för att använda dessa deklarationer, men de har inte tillgång till definitionen. Om typdefinitionen inte stämmer överens med den tidigare angivna deklarationen av detta element, utfärdar kompilatorn ett felmeddelande i detta fall.
För variabler tilldelar definitioner värden till minnesområden som reserverats vid tidpunkten för deklarationen. För funktioner ger definitionerna en beskrivning av själva funktionskroppen. Även om en variabel eller funktion kan deklareras många gånger, definieras den vanligtvis bara en gång. Dynamiska språk som Javascript eller Python tillåter dock att funktioner omdefinieras.
En deklaration används ofta för att komma åt en funktion eller variabel definierad i en annan källfil eller ett annat bibliotek .
Följande är några exempel på användningen av icke-definition C -deklarationer:
extern char exempel1 ; extern int exempel2 ; void exempel3 ( void );Och nu några exempel på definitioner på C-språket:
char exempel1 ; int exempel2 = 5 ; void exempel3 ( void ) { int x = 7 ; }I olika programmeringsspråk kan kraven på deklaration av vissa programobjekt variera kraftigt. I allmänhet kan följande parametrar deklareras:
I programmering skiljer man ibland en definition från en deklaration, i förhållande till sådana element som:
Dessutom kan deklarationen och definitionen kombineras eller specificeras separat på olika ställen i källkoden (upp till olika filer ).
En deklaration i källkod bör i allmänhet föregå den första användningen av en given identifierare i ett program. Deklarationen är information för översättaren som inte i sig genererar körbar kod (men ofta resulterar i en minnesallokering ).
Syntaxen för de flesta programmeringsspråk ger en deklaration på en specifik plats i källkoden. Detta är antingen en speciell del av programmet (modul, subrutin, paket) eller början på ett specifikt block (det vill säga alla deklarationer måste finnas i programtexten före den första instruktionen i detta block).
Annonsen kan vara:
Implicita deklarationer används i programmeringsspråk som tillåter användning av en identifierare utan att uttryckligen deklarera det. I det här fallet måste översättaren ha en mekanism för att lägga till attribut till identifieraren baserat på vissa metoder:
Implicita deklarationer kan leda till fel, till exempel kommer en bokstavsfelstavning i en identifierare att orsaka en ny variabel och därigenom orsaka ett fel i programmets åtgärd.
Explicit deklarationExplicita deklarationer kan vara fullständiga eller partiella . Deldeklarationer kan användas i följande fall:
En variabeldeklaration kan förutom själva deklarationen även innehålla initiering av variabeln , det vill säga en indikation på variabelns initiala värde.
C , C++Annonser anges:
Deklarationer anges i ett program eller dess underprogram i blockspecifikationen, placerad mellan rubriken (program, procedurer, funktioner, modul (Turbo Pascal)) och ordet som anger början av instruktionsgruppen för detta block ( begin).
program Exempel ; var global_var ; ... förfarande Licz () ; var local_var ; Börja slut ; {procedur} börjar slut . {program} PL/1Deklarationen har formen av en instruktion DECLARE(eller förkortad DCL) och kan specificeras var som helst inom blocket (i PL/1 är ett sådant block antingen en procedur från rubrik PROCEDUREtill ett ord ENDeller ett block med instruktioner BEGIN ... END) och hänvisar till objekt tillgängligt i detta block. Språket har en mycket utökad attributsyntax och en utökad mekanism för attributsubstitution och implicita deklarationer.
Exempel : PROC ; ... /* Använd variabeln X som anges nedan * / X = 1 ; ... /* en blockdeklaration kan specificeras med hjälp av en identifierare men den deklarerade variabeln måste vara tillgänglig i början av blocket * / DCL X FIXED DECIMAL ( 5 , 0 ) ; ... END Exempel ;I C, C++ placeras funktionsdeklarationer (även kallade prototyper ) vanligtvis i huvudfiler som definierar specifika moduler.
/* trunc funktion prototyp */ int trunc ( dubbel x ); PascalFunktionsdeklarationer gäller när funktionen ska anropas , inte när den är definierad.
{ Pascal } procedur Proc_1 ; framåt ; procedur Proc_2 ; börja … {''Att anropa en procedur som ännu inte har definierats'' ''kräver deklaration''} Proc_1 ; ... slut ; … { Efterföljande procedurdefinition } procedur Proc_1 ; börja ... slut ; Turbo PascalDeklarationen som föregår själva funktionen används på samma sätt som i Pascal. I Turbo Pascal specificeras även deklarationer i moduler (Turbo Pascals egen förlängning av Pascal) i interface.
{ Turbo Pascal } enhet Exempel ; gränssnitt { deklaration av en funktion tillgänglig i andra moduler och program } funktion trunc ( x : real ) : heltal ; implementering { definition av funktionen som deklarerats ovan eftersom parametrarna och returvärdet definierades i deklarationen, funktionerna i gränssnittssektionen behöver inte upprepa dem } funktion trunc ; börja ...