Void | это... Что такое Void? (original) (raw)

voidтип, спецификатор типа и ключевое слово в языках программирования Си, Си++, Java, C# и D, заимствованное у их общего предшественника Алгола 68.

Содержание

История

Среди современных языков программирования ключевое слово void впервые появилось в Си++ для поддержки концепции обобщенных указателей. Тем не менее, благодаря скорому заимствованию у Си++, первым нормативным документом, содержащим это ключевое слово стал стандарт языка Си, опубликованный ANSI в 1989г. В рамках языка Си++ void был стандартизован в 1998г.

Впоследствии ключевое слово void и связанные с ним языковые конструкции были унаследованы языками Java и C#, D.

Синтаксис

Синтаксически, void является одним из спецификаторов типа, входящих в более общую группу спецификаторов объявления.

Семантика

Семантика ключевого слова void не подчиняется общей семантике спецификаторов типа и зависит от способа употребления:

#define promote_ptr() ((void) (ptr++))

Тип void определен как неполный тип, который не может быть дополнен. Как следствие, этот тип не должен быть использован там, где допускаются только полные типы, например, в качестве типа параметра в определении функции.

Язык Си до введения void

До публикации первого стандарта Си в 1989г., которая ввела в язык ключевое слово void общепринятой практикой было объявлять функции, не возвращающие значений без использования спецификаторов типов. Хотя семантически такое объявление было эквивалентно объявлению функции, возвращающей значение типа int, намеренно опущенные спецификаторы типа подчеркивали, что функция не возвращает никакого определенного значения. Например:

Схожим образом, определения функций, не имеющие параметров записывались с пустыми круглыми скобками:

В качестве обобщенного указателя использовался указатель на char. Более того, современные стандарты требуют, чтобы представление и требования по выравниванию для void-указателей были теми же, что для указателей на char, что означает взаимозаменяемость этих типов.

Первый стандартный диалект Си (C89), хотя уже позволял записи с ключевым словом void, все же допускал такое использование неявного int в целях поддержки совместимости с существующим кодом. Современный диалект Си (C99) не допускает отстутсвия спецификаторов типов в именах типов и объявлениях.

Примеры

C++

#include <stdio.h> void main() { printf("Привет!\n"); }

Java

void message(){
  System.out.println("Привет!");
}

C

void message(void)
{
  printf("Привет!");
}

D

void message()
{   writefln("Привет!");
}

Ссылки