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

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 05 дек 2020, 23:10

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++.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 05 дек 2020, 23:14

Про вложенные C-функции GCC довольно много пишут по Интернет:
Вложенные функции - это плохо в gcc?

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

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

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей