Prázdnota

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 27. července 2021; kontroly vyžadují 4 úpravy .

void  je typ , specifikátor typu a klíčové slovo v programovacích jazycích C , C++ , Java , C# , Objective-C , D , ActionScript a PHP .

Historie

Mezi moderními programovacími jazyky se klíčové slovo voidpoprvé objevilo v C++, aby podpořilo koncept generických ukazatelů . Vzhledem k jeho rychlému přebírání z C++ byl však prvním normativním dokumentem obsahujícím toto klíčové slovo standard C, publikovaný ANSI v roce 1989. V rámci jazyka C++ voidbyl standardizován v roce 1998.

Následně klíčové slovo voida související jazykové konstrukty zdědila Java a C#, D, PHP [1] .

Syntaxe

Syntakticky je to voidjeden ze specifikátorů typu v obecnější skupině specifikátorů deklarací , ale v některých programovacích jazycích je implementován jako příkaz. Například v JavaScriptu void je to operátor a vždy vrací undefined:

void výraz === nedefinováno ;

Sémantika

Sémantika klíčového slova voidnepodléhá obecné sémantice specifikátorů typu a závisí na použití:

  • Jako název funkce návratový typ: označuje, že funkce nevrací hodnotu a že volání funkce je výraz void . Tělo takové funkce by nemělo obsahovat příkazy return s výrazy. Například:voidf ( );
  • Jako součást deklarátoru funkce : označuje, že funkce má prototyp a žádné parametry. Například:int f ( void );
  • Jako název cílového typu operace přetypování: takové přetypování void znamená zahození hodnoty výrazu přetypování. Například:#define promotion_ptr() ((void) (ptr++))
  • Jako součást názvu typu void pointer : takový ukazatel je schopen reprezentovat hodnoty libovolných ukazatelů na objekt a neúplné typy , tedy adresy libovolných objektů . -pointer voidje tedy zobecněný objektový ukazatel . void-ukazatele nejsou schopny reprezentovat hodnoty ukazatelů funkcí . S výjimkou případu přetypování konstantního nulového ukazatele na ukazatel funkce v C neexistují žádné explicitní ani implicitní převody mezi void-pointery a ukazateli funkce.

Typ voidje definován jako neúplný typ, který nelze dokončit. V důsledku toho by se tento typ neměl používat tam, kde jsou povoleny pouze úplné typy, jako je typ parametru v definici funkce .

Jazyk C před zrušením

Před vydáním prvního standardu C v roce 1989, který zavedl klíčové slovo void, bylo běžnou praxí deklarovat funkce, které nevracely hodnoty, bez použití specifikátorů typu. Zatímco taková deklarace byla sémanticky ekvivalentní deklaraci funkce vracející hodnotu typu int, záměrně vynechané specifikátory typu zdůrazňovaly, že funkce nevrací žádnou konkrétní hodnotu. Například:

f ( longl ) _ { /* ... */ }

Podobně definice funkcí, které neměly žádné parametry, byly zapsány s prázdnými závorkami:

int main () { /* ... */ }

Jako obecný ukazatel byl použit ukazatel na char . Moderní standardy navíc vyžadují, aby požadavky na reprezentaci a zarovnání pro void-pointery byly stejné jako pro ukazatele na char, což znamená, že tyto typy jsou zaměnitelné .

První standardní dialekt C ( C89 ), ačkoli již umožňoval zápis pomocí klíčového slova void, stále umožňoval použití implicitního int , aby byla zachována kompatibilita s existujícím kódem. Moderní dialekt C ( C99 ) neumožňuje absenci specifikátorů typu v názvech a deklaracích typů.

Příklady

Jsou uvedeny příklady deklarace funkce, která vrací void.

C++

neplatná zpráva ()

Java

neplatná zpráva ()

C#

neplatná zpráva ()

C

neplatná zpráva ()

Objective-C

- ( neplatná ) zpráva ;

D

neplatná zpráva ()

ActionScript

funkční zpráva () : neplatná

PHP (> 7.0)

funkční zpráva () : neplatná

Základní

dílčí zpráva ( )

Poznámky

  1. [1] Archivováno 4. prosince 2016 na Wayback Machine Novinky nového typu od vývojářů jazyka PHP