Gol

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 27 iulie 2021; verificările necesită 4 modificări .

void  este un tip , un specificator de tip și un cuvânt cheie în limbajele de programare C , C++ , Java , C# , Objective-C , D , ActionScript și PHP .

Istorie

Printre limbajele de programare moderne, cuvântul cheie voida apărut pentru prima dată în C++ pentru a sprijini conceptul de pointeri generici . Cu toate acestea, datorită împrumutării rapide de la C++, primul document normativ care conține acest cuvânt cheie a fost standardul C, publicat de ANSI în 1989. În limbajul C++ void, a fost standardizat în 1998.

Ulterior, cuvântul cheie voidși constructele de limbaj asociate au fost moștenite de Java și C#, D, PHP [1] .

Sintaxă

Sintactic, voideste unul dintre specificatorii de tip din grupul mai general de specificatori de declarații , dar este implementat ca instrucțiune în unele limbaje de programare. De exemplu, în JavaScript void este un operator și returnează întotdeauna undefined:

expresie nulă === nedefinită ;

Semantică

Semantica cuvântului cheie voidnu este supusă semanticii generale a specificatorilor de tip și depinde de utilizare:

  • Ca numele unei funcții returnează tipul: indică faptul că funcția nu returnează o valoare și că apelul funcției este o expresie void . Corpul unei astfel de funcții nu trebuie să conțină instrucțiuni returnate cu expresii. De exemplu:voidf ( );
  • Ca parte a unui declarator de funcție : indică faptul că funcția are un prototip și nu are parametri. De exemplu:int f ( gol );
  • Ca numele tipului țintă al unei operațiuni de turnare: o astfel de turnare nulă înseamnă eliminarea valorii expresiei de turnare. De exemplu:#define promote_ptr() ((void) (ptr++))
  • Ca parte a unui nume de tip pointer nul : un astfel de pointer este capabil să reprezinte valorile oricăror pointeri la obiect și tipuri incomplete , adică adresele oricăror obiecte . Astfel, -pointer este un indicator de obiectvoid generalizat . -pointerii nu sunt capabili să reprezinte valorile indicatorilor de funcție . Cu excepția cazului de turnare a unui pointer const nul la un pointer de funcție în C, nu există conversii explicite sau implicite între -pointerii și pointerii funcție.voidvoid

Tipul voideste definit ca un tip incomplet care nu poate fi completat. În consecință, acest tip nu trebuie utilizat acolo unde sunt permise numai tipuri complete, cum ar fi un tip de parametru într- o definiție a funcției .

Limbajul C înainte de void

Înainte de publicarea primului standard C în 1989, care a introdus cuvântul cheie void, era o practică obișnuită să se declare funcții care nu returnau valori fără a utiliza specificatorii de tip. În timp ce o astfel de declarație era echivalentă din punct de vedere semantic cu declararea unei funcții care returnează o valoare de tip int, specificatorii de tip omis intenționat au subliniat că funcția nu a returnat nicio valoare anume. De exemplu:

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

În mod similar, definițiile funcției care nu aveau parametri au fost scrise cu paranteze goale:

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

Un pointer către char a fost folosit ca indicator generic . Mai mult, standardele moderne cer ca cerințele de reprezentare și aliniere pentru void-pointeri să fie aceleași ca pentru pointerii către char, ceea ce înseamnă că aceste tipuri sunt interschimbabile .

Primul dialect standard al lui C ( C89 ), deși permitea deja notarea cu cuvântul cheie void, permitea totuși această utilizare a intului implicit pentru a menține compatibilitatea cu codul existent. Dialectul C modern ( C99 ) nu permite absența specificatorilor de tip în numele și declarațiile de tip.

Exemple

Sunt prezentate exemple de declarare a unei funcții care returnează nulă.

C++

mesaj nul ()

Java

mesaj nul ()

C#

mesaj nul ()

C

mesaj nul ()

Obiectiv-C

- ( nul ) mesaj ;

D

mesaj nul ()

ActionScript

mesajul funcției () : nul

PHP (> 7.0)

mesajul funcției () : nul

De bază

submesaj ( )

Note

  1. [1] Arhivat 4 decembrie 2016 la Wayback Machine Noutăți de tip nou de la dezvoltatorii limbajului PHP