以下のコードを参照してください。別の関数で関数を定義しています。
void test1(void)
{
void test2(void)
{
printf("test2\n");
}
printf("test1\n");
}
int main(void)
{
test1();
return 0;
}
この使用法は奇妙です.c89/c99の使用法ですか、それともgccの拡張のみですか(私はコンパイルされたubuntu 12でgcc 4.6.3を使用しました)。このコードを実行すると、「test2」と「test1」が出力されます。test2 は test1 でのみ呼び出すことができます。
さらに、この用法の一般的なシーンは何ですか、またはこの用法は何に使用されますか?