не всегда так. вот мой пример, когда это не так. есть модуль(их много). В .h файле этого модуля есть описание методов(функций) работы с этим модулем.
smkr.h - файл
extern const t_RF_VMethod RF_VMethodSMKR;
таких модулей 25штук(добавляются)
все эти методы нужно свести в общую таблицу, чтобы потом из нее сформировать массив методов и многое другое.
Вот тут и появляется .h файл в который включаются все хедеры модулей проекта
#include <smkr.h>
...
#define EXPAND_RF_VMethod( X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13) X7,
в си файле Contens.c
const t_RF_VMethod *const pRFVMethod[C2000DeviceTypeCount+1]={
CONTENTS( EXPAND_RF_VMethod )
};