#include — как ни странно.
Вы так и не поняли такой вещи, как «единица компиляции». Дело в том, что в Си c-файлы компилируются независимо друг от друга (в единую программу всё собирает линкер). А чтобы сказать «оно есть, только в другой единице компиляции», используют прототипы и extern’ы.
А если вы хотите просто внести код в ту же единицу компиляции, просто пишите его в хедере, да и всё. Только в большинстве компиляторов это исключает предкомпилированные хедеры — а ТАКИЕ хедеры вам предкомпилировать, скорее всего, и не нужно.
<брюзга mode on>
Не создают кода (а значит, в традиционной системе с кучей единиц компиляции находится именно в хедерах)
• extern и прототипы
• inline
• не до конца специфицированные шаблоны
• static-поля в классе (но потом это static-поле придётся повторить в какой-нибудь одной единице компиляции)
• может, ещё что-то, только я забыл…
<брюзга mode off>