Next: Constructing Calls , Previous: Labels as Values , Up: C Extensions A nested function is a function defined inside another function. Nested functions are supported as an extension in GNU C, but are not supported by GNU C++. The nested function's name is local to the block where it is defined. For example, here we define a nested function named square , and call it twice: foo (double a, double b) { double square (double z) { return z * z; } return square (a) + square (b); } The nested function can access all the variables of the containing function that are visible at the point of its definition. This is called lexical scoping . For example, here we show a nested function which uses an inherited variable named offset : bar (int *array, int offset, int size) { int access (int *array, int index) { return array[index + of...