Vacío

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 27 de julio de 2021; las comprobaciones requieren 4 ediciones .

void  es un tipo , un especificador de tipo y una palabra clave en los lenguajes de programación C , C++ , Java , C# , Objective-C , D , ActionScript y PHP .

Historia

Entre los lenguajes de programación modernos, la palabra clave voidapareció por primera vez en C++ para respaldar el concepto de punteros genéricos . Sin embargo, debido a su rápido préstamo de C++, el primer documento normativo en contener esta palabra clave fue el estándar C, publicado por ANSI en 1989. Dentro del lenguaje C++ void, fue estandarizado en 1998.

Posteriormente, voidJava y C#, D, PHP [1] heredaron la palabra clave y las construcciones del lenguaje relacionado .

Sintaxis

Sintácticamente, voides uno de los especificadores de tipo en el grupo más general de especificadores de declaración , pero se implementa como una declaración en algunos lenguajes de programación. Por ejemplo, en JavaScript void es un operador y siempre devuelve undefined:

expresión vacía === indefinido ;

Semántica

La semántica de la palabra clave voidno está sujeta a la semántica general de los especificadores de tipo y depende del uso:

  • Como el nombre de un tipo de devolución de función: indica que la función no devuelve un valor y que la llamada a la función es una expresión vacía . El cuerpo de dicha función no debe contener declaraciones de retorno con expresiones. Por ejemplo:vacíof ( );
  • Como parte de un declarador de función : indica que la función tiene un prototipo y no tiene parámetros. Por ejemplo:int f ( vacío );
  • Como el nombre del tipo de destino de una operación de conversión: tal conversión vacía significa descartar el valor de la expresión de conversión. Por ejemplo:#define promover_ptr() ((vacío) (ptr++))
  • Como parte de un nombre de tipo de puntero vacío : dicho puntero es capaz de representar los valores de cualquier puntero a objeto y tipos incompletos , es decir, las direcciones de cualquier objeto . Por lo tanto, void-pointer es un puntero de objeto generalizado . void-Los punteros no son capaces de representar los valores de los punteros de función . Excepto en el caso de convertir un puntero nulo const a un puntero de función en C, no hay conversiones explícitas o implícitasvoid entre punteros y punteros de función.

El tipo voidse define como un tipo incompleto que no se puede completar. Como consecuencia, este tipo no debe usarse donde solo se permiten tipos completos, como un tipo de parámetro en una definición de función .

El lenguaje C antes de void

Antes de la publicación del primer estándar C en 1989, que introdujo la palabra clave void, era una práctica común declarar funciones que no devolvían valores sin usar especificadores de tipo. Si bien tal declaración era semánticamente equivalente a declarar una función que devolvía un valor de tipo int, los especificadores de tipo omitidos intencionalmente enfatizaban que la función no devolvía ningún valor en particular. Por ejemplo:

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

De manera similar, las definiciones de funciones que no tenían parámetros se escribieron con paréntesis vacíos:

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

Se usó un puntero a char como puntero genérico . Además, los estándares modernos exigen que los requisitos de representación y alineación para voidlos punteros - sean los mismos que para los punteros to char, lo que significa que estos tipos son intercambiables .

El primer dialecto estándar de C ( C89 ), aunque ya permitía la notación con la palabra clave void, todavía permitía este uso del int implícito para mantener la compatibilidad con el código existente. El dialecto C moderno ( C99 ) no permite la ausencia de especificadores de tipo en los nombres y declaraciones de tipo.

Ejemplos

Se muestran ejemplos de cómo declarar una función que devuelve void.

C++

mensaje nulo ()

Java

mensaje nulo ()

C#

mensaje nulo ()

C

mensaje nulo ()

Objetivo-C

- ( vacío ) mensaje ;

D

mensaje nulo ()

ActionScript

mensaje de función () : vacío

PHP (> 7.0)

mensaje de función () : vacío

Básico

submensaje ( )

Notas

  1. [1] Archivado el 4 de diciembre de 2016 en Wayback Machine Nuevas noticias de tipo de los desarrolladores del lenguaje PHP