void är en typ , typspecifikator och nyckelord i programmeringsspråken C , C++ , Java , C# , Objective-C , D , ActionScript och PHP .
Bland moderna programmeringsspråk dök nyckelordet voidförst upp i C++ för att stödja konceptet med generiska pekare . Men på grund av dess snabba lån från C++ var det första normativa dokumentet som innehöll detta nyckelord C-standarden, publicerad av ANSI 1989. Inom C++-språket voidstandardiserades den 1998.
Därefter voidärvdes nyckelordet och relaterade språkkonstruktioner av Java och C#, D, PHP [1] .
Syntaktiskt sett voidär det en av typspecifikationerna i den mer allmänna gruppen av deklarationsspecifikatorer , men implementeras som en sats i vissa programmeringsspråk. Till exempel, i JavaScript void är det en operator och returnerar alltid undefined:
void uttryck === odefinierat ;Semantiken för nyckelordet är voidinte föremål för den allmänna semantiken för typspecifikatorer och beror på användningen:
Typen voiddefinieras som en ofullständig typ som inte kan kompletteras. Som en konsekvens bör denna typ inte användas där endast fullständiga typer är tillåtna, till exempel som en parametertyp i en funktionsdefinition .
Före publiceringen av den första C-standarden 1989, som introducerade nyckelordet void, var det vanligt att deklarera funktioner som inte returnerade värden utan att använda typspecifikationer. Även om en sådan deklaration semantiskt sett var likvärdig med att deklarera en funktion som returnerar ett värde av typ int, betonade de avsiktligt utelämnade typspecifikationerna att funktionen inte returnerade något särskilt värde. Till exempel:
f ( lång ) _ { /* ... */ }På liknande sätt skrevs funktionsdefinitioner som inte hade några parametrar med tomma parenteser:
int main () { /* ... */ }En pekare till char användes som en generisk pekare . Dessutom kräver moderna standarder att representations- och anpassningskraven för voidpekare är desamma som för pekare till char, vilket innebär att dessa typer är utbytbara .
Den första standarddialekten av C ( C89 ), även om den redan tillåter notering med nyckelordet void, tillät fortfarande denna användning av den implicita int för att upprätthålla kompatibilitet med befintlig kod. Modern C-dialekt ( C99 ) tillåter inte frånvaron av typspecifikationer i typnamn och deklarationer.
Exempel på att deklarera en funktion som returnerar ogiltig visas.
Datatyper | |
---|---|
Otolkbart | |
Numerisk | |
Text | |
Referens | |
Sammansatt | |
abstrakt | |
Övrig | |
Relaterade ämnen |