Это фича gcc и других кто под gcc мимикрирует (другие я не проверял). В обычном Си нет вложенных функций. А нужно это для частных случаев, разбить большую функцию на мелкие, но так чтобы они вообще небыли видны из вне. Переопределить другую функцию избежав коллизии имён и прочие довольно специфические случаи для использования которые можно обойти и без этой штучки дрючки.
Автору кода почему-то не нравятся глобальные объявления, которые можно было сделать один раз в начале файла и не повторять в каждой функции.
Возможно он хочет, чтобы в каждой функции было явно видно, какие другие функции она использует. Что-то вроде самодокументации, контролируемой компилятором.
Ааа, там чисто объявления, я думал и реализация тоже имелась в виду. Ну…. видимо он не любит использовать заголовочные файлы и всё такое. То есть я так понимаю у чела объявление всего ровно перед использованием. Тут причины скорее всего чисто личные, нравится ему так и всё. Никакого особого смысла так делать нет по моему.
А ты возьми да в issue напрямую спроси, почему мол так вот так вот и всё =)
Хочу себе взять, это файл fft(mayer/ooura), там сверху интерфейс к puredata, потом документация, и собственно fft ooura. Теперь все понятнее стало. Сначало было необычное что-то.
Зачем делают объявление функций внутри функции, яп си. Например:
простейший юз-кейс - дальнейшие вызовы qsort, bsearch..вместо анонимных функций; и прочие локальные callback. Анонимных функций нет, но есть локальные которые к тому захватывают часть скопа и синтаксис у них проще. В принципе удобно, но поздно и не прижилось.
только ради такого и делалось - чтобы локальные колбеки не выносить вверх.