Страница 2 из 2

Re: Осваиваем Си по-быстрому

Добавлено: 05 дек 2020, 23:10
Olej
Olej писал(а):
05 дек 2020, 22:56
Характерно, что это именно расширение GCC!
А вот теперь смотрим что будет в том же компиляторе GCC, но если этот код интерпретировать как C++:

Код: Выделить всё

olej@nvidia:~/2020_WORK/Zodiac_Systems/OWN-DRAFT-TESTs$ g++ -Wall -O nested.c -o nested
nested.c: In function ‘void nested()’:
nested.c:6:22: error: a function-definition is not allowed here before ‘{’ token
    6 |    void pow2( void ) {        // вложенное 1-го уровня описание функции pow2()
      |                      ^
nested.c:17:4: error: ‘pow2’ was not declared in this scope
   17 |    pow2();
      |    ^~~~
То же самое, что и Clang!

Это тот довольно редкий случай, когда какие-то синтаксические конструкции языка C расцениваются как синтаксически недопустимые по правилам C++.

Re: Осваиваем Си по-быстрому

Добавлено: 05 дек 2020, 23:14
Olej
Про вложенные C-функции GCC довольно много пишут по Интернет:
Вложенные функции - это плохо в gcc?

Вложенные функции в C

Очень обстоятельная главка из документации GCC:
GCC 7 - 6.4. Nested Functions
6.4 Вложенные функции