WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

void — тип, спецификатор типа и ключевое слово в языках программирования С, C++, Java, C#, Objective-C, D, ActionScript и PHP.

История

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

В языке PHP возможность возвращать void появилась [1] с 01.12.2016 года в версии 7.1.0.

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

Синтаксис

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

void expression === undefined;

Семантика

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

  • В качестве имени типа значения, возвращаемого функцией: указывает на то, что функция не возвращает значения, а вызов такой функции является void-выражением. Тело такой функции не должно содержать операторов return с выражениями. Например:
    void f();
    
  • В составе декларатора функции: указывает на то, что функция имеет прототип и не имеет параметров. Например:
    int f(void);
    
  • В качестве имени целевого типа операции приведения: такое void-приведение означает отказ от значения приводимого выражения. Например:
    #define promote_ptr() ((void) (ptr++))
    
  • В составе имени типа void-указателя: такой указатель способен представлять значения любых указателей на объектные и неполные типы, то есть адреса любых объектов. Таким образом, void-указатель является обобщенным объектным указателем. void-указатели не способны представлять значения указателей на функции. За исключением случая приведения константного null-указателя к указателю на функцию в Си, явных и неявных преобразований между void-указателями и указателями на функции нет.

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

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

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

f(long l)
{
    /* ... */
}

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

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

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

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

Примеры

Показаны примеры объявления функции, возвращающей void.

C++

void message()

Java

void message()

C#

void message()

C

void message(void)

Objective-C

-(void) message;

D

void message()

ActionScript

function message() : void

PHP (> 7.0)

function message(): void

Примечания

  1. Новость о появлении нового типа от разработчиков языка PHP

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии