Forward declaration
In computer programming, a forward declaration is a declaration of an identifier (denoting an entity such as a type, a variable, a constant, or a function) for which the programmer has not yet given a complete definition. It is required for a compiler to know certain properties of an identifier (size for memory allocation, data type for type checking, such as type signature of functions), but it isn't required to know some other details, like the particular value it holds (in case of variables or constants) or definition (in the case of functions).