Вот уже как лет 15 программирую на Си и думал, что уже знаю всё и вся, но на прошлой удивился следующему:
Оказывается, если
реализацию функции поместить в заголовочном файле unit.h и описать её как
Код
inline void foo(void) { do something...}
, без слова static
а в файле unit.c поместить следующее
Код
extern inline void foo(void);
то компилятор гарантировано создаст экземпляр этой функции для внешнего вызова, а в других модулях,
включающих заголовочный файл unit.h, эта функция может заинлайнится, либо будет вызвана из модуля unit.c
(это зависит от уровня оптимизации и отдано на откуп компилятору).
Вот такие пироги)))