@npcprom

Почему в Си работают локальные функции?

Случайно выявил что в си можно объявлять локальные функции(функция внутри функции) как к примеру в Паскале. В форумах пишут, что на С и на СРР это не поддерживается.
Компилятор gcc 6.3.
#include <stdlib.h>
#include <stdio.h>

void Foo()
{
	void Too()
	{
		printf( "Too\n" );
	}
	
	printf("Foo\n");
	Too();	
}

int main( void )
{
	printf( "Main\n" );
	Foo();
	return 0;
}

stdout:
Main
Foo
Too
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Очевидно, расширение GNU.
MinGW, даже с ключом -std=c99, OK.

Причём работает только в режиме Си. MinGW/Cи++
C:\TestApps\NestedFunction3\main.cpp|7|error: a function-definition is not allowed here before '{' token|

Embarcaredo x86 (Borland):
[bcc32 Error] File1.c(7): E2141 Declaration syntax error

Embarcadero x64 (clang):
[bcc64 Error] File1.c(6): expected ';' at end of declaration
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы