WiseLord писал(а): Нет смысла выносить все функции в хидер - ведь не все они будут вызываться из других место кода. Если функция чисто внутри модуля (а-ля приватная в C++) - лучше её просто в .c описать. А сделав её ещё и static, мы уже конкретно укажем компилятору, что нигде, кроме этого модуля, она больше использоваться не будет, что может ему помочь с оптимизацией кода.
это спорный вопрос
1. мы ничего не знаем о текущих задачах вопрошающего - где и откуда он ее вызывает еще
2. мы ничего не знаем о том как что у него будет меняться - где будет вызывать
- за себя могу сказать, что стандартное объявление
всех функций модуля в *.h снимает много головной боли,
в свое время работая с keil он требовал прототип указывать в *.с, но чтобы использовать в др. модуле
нужно еще было объявить его же в *.h, что по "молодости" вызывало у меня недоумение и кашу в голове
- жизнь приучает писать, так, чтобы модуль можно было многократно использовать в разных проектах, по сути - библиотеки,
и что и когда понадобится я сам не знаю, поэтому все протоотипы в *.h
- достаточно посмотреть как объявляются прототипы в Borland или VS
3. насчет оптимизации, нет практически никакой разницы, за 15 лет не заметил ни разу, для оптимизации есть другие средства
- компилятор /линкер не включает все прототипы в код, а только используемые, остальное выбросит
но это ИМХО
4. объявление прототипа - правильная стратегия, совет двигать выше/ниже функции для новичка я бы не рекомендовал,
будет переучиваться, но потом
