Jump to content

Прототип функции

(Перенаправлено из объявления функции )

В компьютерном программировании прототип функции — это объявление функции , в котором указывается имя функции и сигнатура типа ( арность , типы данных и параметров тип возвращаемого значения ), но отсутствует тело функции. В то время как определение функции определяет, как функция делает то, что она делает («реализация»), прототип функции просто определяет ее интерфейс, т. е. какие типы данных входят в нее и выходят из нее. Термин «прототип функции» особенно используется в контексте языков программирования C и C++ , где размещение предварительных объявлений функций в заголовочных файлах позволяет разделить программу на единицы трансляции , то есть на части, которые компилятор может отдельно преобразовать в объектные файлы . быть объединенным компоновщиком в исполняемый файл или библиотеку . Объявление функции предшествует определению функции и содержит сведения об имени, типе возвращаемого значения и классе хранения, а также других соответствующих атрибутах. [1]

Прототипы функций можно использовать в следующих случаях: [2]

  • Определение внешнего типа
  • Создание части интерфейса

В прототипе имена параметров не являются обязательными (а в C/C++ они имеют область действия прототипа функции , что означает, что их область действия заканчивается в конце прототипа), однако тип необходим вместе со всеми модификаторами (например, если это указатель или ссылка на константный параметр), кроме только константа .

В объектно-ориентированном программировании интерфейсы и абстрактные методы служат одной и той же цели.

Рассмотрим следующий прототип функции:

void sum(int a, int b);

или

void sum(int, int);

или

auto sum(int, int) -> void;  // C++ only

Прототипы функций включают сигнатуру функции, имя функции, тип возвращаемого значения и спецификатор доступа. В данном случае имя функции — «Сумма». Сигнатура функции определяет количество параметров и их типы. Тип возвращаемого значения — «void». Это означает, что функция не будет возвращать никакого значения. Обратите внимание, что имена параметров в первом примере не являются обязательными.

Использование

[ редактировать ]

В ранних версиях C, если функция ранее не была объявлена ​​и ее имя встречалось в выражении, за которым следовала левая скобка, она неявно объявлялась как функция, возвращающая int и ничего не предполагалось в отношении его аргументов. В этом случае компилятор не сможет выполнить проверку правильности количества и типов аргументов во время компиляции. Стандарт C99 требует использования прототипов.

char MyFunction(int a); /* Function prototype */

#include <stdio.h>
#include <limits.h> 
int main(void) 
{

  putchar(MyFunction(-1));   /* Correctly formatted call */
  putchar(MyFunction(1.5));  /* Compiler generates a warning because of type mismatch */
  putchar(MyFunction("IncorrectArgType")); /* Compiler will generate a warning */
  putchar(MyFunction());     /* Compiler will generate an Error too few arguments */
  
  int one = 1;
  putchar(MyFunction(INT_MAX + one));  /* Although adding 1 to the maximum integer 
                                       /* is an error it cannot be detected at compile time */

  return 0;
}

char MyFunction(int n)  /* Function definition */
{
  if (n > 0) return '>';
  if (n < 0) return '<'; 
  return '=';
}

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

Создание интерфейсов библиотеки

[ редактировать ]

Помещая прототипы функций в файл , можно указать интерфейс библиотеки заголовочный .

Объявление класса

[ редактировать ]

В C++ прототипы функций также используются в определениях классов .

См. также

[ редактировать ]
  1. ^ ТайлерMSFT (25 января 2023 г.). «Прототипы функций» . Learn.microsoft.com . Проверено 9 августа 2023 г.
  2. ^ «Прототипы функций» . www.ibm.com . 25 октября 2018 г. Проверено 9 августа 2023 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 649f0dbe06c790fad65682126feb7b57__1722319260
URL1:https://arc.ask3.ru/arc/aa/64/57/649f0dbe06c790fad65682126feb7b57.html
Заголовок, (Title) документа по адресу, URL1:
Function prototype - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)