Forward Declaration

In computer programming, a forward declaration is a declaration of an identifier (denoting an entity such as a type, a variable, or a function) for which the programmer has not yet given a complete definition. It is required for a compiler to know the type (size) of an identifier, but not a particular value it holds (in case of variables).

void printThisInteger(int);

In C/C++, the line above represents forward declaration of a function and is the function's prototype. After processing this declaration, the compiler would allow the programmer to refer to the entity printThisInteger in the rest of the program. Definition for a function must be provided somewhere (same file or other, where it would be responsibility of the linker to correctly match references to particular function in one or several object files with its definition, which must be unique, in another):

void printThisInteger(int x) { printf("%d\n", x); }

Variables may have only forward declaration and lack definition. During compilation time these are initialized by language specific rules (to undefined values, 0, NULL pointers, ...). Variables, which are defined in other source/object file, must have a forward declaration specified with a keyword extern:

int foo; //foo might be defined somewhere in this file extern int bar; //bar must be defined in some other file

In Pascal and other Wirth programming languages, it is a general rule that all entities must be declared before use. In C, the same general rule applies, but with an exception for undeclared functions and incomplete types. Thus, in C it is possible (although unwise) to implement a pair of mutually recursive functions thus:

int first(int x) { if (x == 0) return 1; return second(x-1); //forward reference to second } int second(int x) { if (x == 0) return 0; return first(x-1); }

In Pascal, the same implementation requires a forward declaration of second to precede its use in first. Without the forward declaration, the compiler will produce an error message indicating that the identifier second has been used without being declared.

Read more about Forward Declaration:  Forward Reference

Famous quotes containing the word declaration:

    The principle of all sovereignty resides essentially in the nation.
    —French National Assembly. Declaration of the Rights of Man (Sept. 1791)