Üres

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. július 27-én felülvizsgált verziótól ; az ellenőrzések 4 szerkesztést igényelnek .

A void  egy típus , típusmeghatározó és kulcsszó a C , C++ , Java , C# , Objective-C , D , ActionScript és PHP programozási nyelvekben .

Történelem

A modern programozási nyelvek közül a kulcsszó voidelőször a C++ nyelven jelent meg, hogy támogassa az általános mutatók koncepcióját . A gyors C++-ból való kölcsönzés miatt azonban az első normatív dokumentum, amely ezt a kulcsszót tartalmazza, a C szabvány volt, amelyet az ANSI adott ki 1989-ben. A C++ nyelven belül void1998-ban szabványosították.

Ezt követően a kulcsszót voidés a kapcsolódó nyelvi konstrukciókat a Java és a C#, D, PHP [1] örökölte .

Szintaxis

Szintaktikailag ez az egyik típusleíró a deklarációs specifikátorokvoid általánosabb csoportjában , de egyes programozási nyelveken utasításként implementálják. Például a JavaScriptben ez egy operátor, és mindig a következőt adja vissza : voidundefined

void kifejezés === undefined ;

Szemantika

A kulcsszó szemantikája voidnem vonatkozik a típusmeghatározók általános szemantikájára, és a használattól függ:

  • A függvény visszaadási típusának neveként : azt jelzi, hogy a függvény nem ad vissza értéket, és a függvényhívás érvénytelen kifejezés . Egy ilyen függvény törzse nem tartalmazhat kifejezésekkel ellátott return utasításokat . Például:voidf ( );
  • A függvénydeklarátor részeként : azt jelzi, hogy a függvénynek prototípusa van, és nincsenek paraméterei. Például:int f ( érvénytelen );
  • Egy cast művelet céltípusának neve: az ilyen üres cast a cast kifejezés értékének elvetését jelenti. Például:#define promote_ptr() ((void) (ptr++))
  • Az üres mutató típusnév részeként: egy ilyen mutató képes megjeleníteni bármely objektumra mutató mutató értékét és a hiányos típusokat , azaz bármely objektum címét . Így a void-pointer egy általánosított objektummutató . void-mutatók nem képesek megjeleníteni a függvénymutatók értékeit . Kivéve azt az esetet, amikor a const null mutatót egy függvénymutatóra öntjük C-ben, nincs explicit vagy implicit konverzió a void-mutatók és a függvénymutatók között.

A típus voidegy hiányos típusként van definiálva, amely nem fejezhető be. Következésképpen ezt a típust nem szabad használni ott, ahol csak a teljes típusok engedélyezettek, például egy paramétertípus egy függvénydefinícióban .

A C nyelv a void előtt

Az első C-szabvány 1989-es kiadása előtt, amely bevezette a kulcsszót void, általános gyakorlat volt olyan függvények deklarálása, amelyek nem adtak vissza értékeket típusleírók használata nélkül. Míg egy ilyen deklaráció szemantikailag egyenértékű volt egy type értéket visszaadó függvény deklarálásával int, a szándékosan kihagyott típusleírók hangsúlyozták, hogy a függvény nem ad vissza semmilyen értéket. Például:

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

Hasonlóképpen, a paraméterekkel nem rendelkező függvénydefiníciókat üres zárójelekkel írtuk:

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

A char mutatót általános mutatóként használták . Ezen túlmenően a modern szabványok megkövetelik, hogy a -pointerek ábrázolási és igazításivoid követelményei ugyanazok legyenek, mint a -ra mutatók esetében char, ami azt jelenti, hogy ezek a típusok felcserélhetők .

A C első szabványos dialektusa ( C89 ), bár már lehetővé tette a jelölést a kulcsszóval void, mégis lehetővé tette az implicit int használatát , hogy fenntartsa a kompatibilitást a meglévő kóddal. A modern C dialektus ( C99 ) nem teszi lehetővé a típusmeghatározók hiányát a típusnevekben és a deklarációkban.

Példák

Példák láthatók egy érvénytelent visszaadó függvény deklarálására.

C++

érvénytelen üzenet ()

Java

érvénytelen üzenet ()

C#

érvénytelen üzenet ()

C

érvénytelen üzenet ()

Objective-C

- ( érvénytelen ) üzenet ;

D

érvénytelen üzenet ()

ActionScript

függvény üzenet () : érvénytelen

PHP (> 7.0)

függvény üzenet () : érvénytelen

Alap

alüzenet ( )

Jegyzetek

  1. [1] Archivált : 2016. december 4. a Wayback Machine -en Új típusú hírek a PHP nyelv fejlesztőitől