Программирование на C и C++

Онлайн справочник программиста на C и C++

Создание прототипов функций, не имеющих параметров

Как известно, прототипы функции сообщают компилятору о типе возвращаемого функцией значения, а также о числе и типе используемых функцией параметров. Поскольку прототипы не являются частью исходной версии С, возникает особый случай, если необходимо создать прототип функции, не принимающей параметров. Это обусловлено тем, что если в прототип функции не включаются параметры, то не определяется информация о типе или числе параметров функции. Необходимо гарантировать, что старые программы могут компилироваться современными компиляторами типа Borland С++. Когда необходимо сообщить компилятору, что функция не получает параметров, следует использовать ключевое слово void внутри списка параметров. Рассмотрим следующую короткую программу:

#include <stdio.h>
void display10(void);
int main(void)
{
display10();
return 0;
void display10(void)
{
int i;
for(i=0; i<10; i++)
printf("%d ", i);
}

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

display10(100);

Тем не менее, если void отсутствует в списке параметров, не будет выдана ошибка и аргумент будет просто проигнорирован.

ЗАМЕТКА: В С++ f() u f(void) полностью эквивалентны и не имеют никакого отношения к только что приведенной дискуссии.