A.2 Функции

Предыдущая  Содержание  Следующая V*D*V

ANSI-C позволяет — но не требует — чтобы декларация функции содержала декларации параметров прямо в списке параметров. Если это сделано, то функция декларируется вместе с типами своих параметров. Имена параметров могут быть указаны как часть декларации функции, но это не имеет никакого отношения к именам параметров, используемых при декларации функции.

 

double sqrt ();                  классическая версия

double sqrt (double);            ANSI-C

double sqrt (double x);          ... с именами параметров

int getpid (void);               без параметров, ANSI-C

 

Если прототип функции ANSI-C был представлен, компилятор ANSI-C попытается преобразовать значения аргументов в типы, задекларированные для параметров.

Определения функций могут использовать оба варианта:

 

double sqrt (double arg)         ANSI-C

{ ... }

 

double sqrt (arg)                классическая версия

  double arg;

{ ... }

 

Есть точные правила взаимодействия между ANSI-C и классическими прототипами и определениями; тем не менее, эти правила являются сложными и подверженными ошибкам. Лучше всего придерживаться только прототипов и определений ANSI-C.

Компилятор GNU-C предупреждает о вызове функций, которые не были продекларированы, с помощью опции -Wall.

 

Предыдущая  Содержание  Следующая