ネスト
された関数とは、別の関数の定義内で定義された関数のことです。これは変数宣言が許可される場所ならばどこでも定義することができるため、
ネストされた関数をネストされた関数内に入れることができます。
収容側関数内で、ネストされた関数は、
auto キーワードを使用して定義する前に宣言できます。
それ以外の場合、ネストされた関数は内部結合を持ちます。この言語フィーチャーは C89 および C99 に対する直交拡張で、
GNU C で開発されたプログラムの移植を容易にするためにインプリメントされています。
ネストされた関数は、その定義の前にある収容側関数のすべての ID にアクセスすることができます。
制約および制限事項
ネストされた関数は、収容側関数が終了した後に呼び出してはなりません。
ネストされた関数は、goto 文を使用して、収容側関数のラベル、または収容側関数から継承された __label__ キーワードで宣言されたローカル・ラベルにジャンプできません。
関連参照