In computer programming, a function prototype is a declaration of a function that specifies the function's name and type signature (arity, data types of parameters, and return type), but omits the function body. While a function definition specifies how the function does what it does (the "implementation"), a function prototype merely specifies its interface, i.e. what data types go in and come out of it. The term "function prototype" is particularly used in the context of the programming languages C and C++ where placing forward declarations of functions in header files allows for splitting a program into translation units, i.e. into parts that a compiler can separately translate into object files, to be combined by a linker into an executable or a library. The function declaration precedes the function definition, giving details of name, return type, and storage class along with other relevant attributes.[1]

Function prototypes can be used when either:[2]

  • Defining an ExternalType
  • Creating an Interface part

In a prototype, parameter names are optional (and in C/C++ have function prototype scope, meaning their scope ends at the end of the prototype), however, the type is necessary along with all modifiers (e.g. if it is a pointer or a reference to const parameter) except const alone.

In object-oriented programming, interfaces and abstract methods serve much the same purpose.

Example

edit

Consider the following function prototype:

void sum(int a, int b);

or, without named parameters:

void sum(int, int);

or, with trailing return types (C++ only):

auto sum(int, int) -> void;

Function prototypes include the function signature, the name of the function, return type and access specifier. In this case the name of the function is "sum". The function signature defines the number of parameters and their types. The return type is "void". This means that the function is not going to return any value. Note that the parameter names in the first example are optional.

Uses

edit

In early versions of C, if a function was not previously declared and its name occurred in an expression followed by a left parenthesis, it was implicitly declared as a function that returns an int and nothing was assumed about its arguments. In this case the compiler would not be able to perform compile-time validity checking of the number and type(s) of arguments. The C99 standard requires the use of prototypes.

#include <limits.h>
#include <stdio.h>

// Function prototype 
char myFunction(int a);

int main(void) {
    putchar(myFunction(-1)); // Correctly formatted call
    putchar(myFunction(1.5)); // Compiler warning: type mismatch
    putchar(myFunction("IncorrectArgType")); // Compiler warning: type mismatch
    putchar(myFunction()); // Compiler error: too few arguments

    // Although adding 1 to INT_MAX is an integer overflow error,
    // it cannot be detected at compile time
    putchar(myFunction(INT_MAX + 1));

    return 0;
}

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

The function MyFunction expects to be called with an integer argument. By including the function prototype, you inform the compiler that the function takes one integer argument and you enable the compiler to catch incorrectly specified calls.

Creating library interfaces

edit

By placing function prototypes in a header file, one can specify an interface for a library.

Class declaration

edit

In C++, function prototypes are also used in class definitions.

See also

edit

References

edit
  1. ^ TylerMSFT (2023-01-25). "Function Prototypes". learn.microsoft.com. Retrieved 2023-08-09.
  2. ^ "Function prototypes". www.ibm.com. 2018-10-25. Retrieved 2023-08-09.

📚 Artikel Terkait di Wikipedia

Prototype

experience prototype represents enough of the appearance and function of the product that it can be used for user research. A functional prototype captures

Prototype JavaScript Framework

prototype for the objects created with that function. The Prototype framework is not to be confused with this language feature. The dollar function,

Prototype (disambiguation)

Software prototyping, the activity of creating prototypes of software applications In programming: Function prototype, a declaration of a function that omits

Memoization

programs. It works by storing the results of expensive calls to pure functions, so that these results can be returned quickly should the same inputs

Prototype-based programming

as prototypes.[citation needed] This model can also be known as prototypal, prototype-oriented, classless, or instance-based programming. Prototype-based

Scope (computer programming)

Variable names used in a function prototype have function prototype visibility, and exit context at the end of the function prototype. Since the name is not

Argument of a function

Domain of a function – Set of all things that may be the input of a mathematical function Function prototype – Declaration of a function's name and type

SpiderMonkey

representing the function, JägerMonkey instead operated by iterating linearly forward through SpiderMonkey bytecode, the internal function representation