forzar otro archivo para definir una función

Digamos que tengo 3 archivos separados llamados: main.c , test.c y test.h. ¿Cómo podría “forzar” una función que incluye test.h para definir una función que ya está declarada en test.h , ese archivo test.c puede llamarlo?

Esto es un poco desordenado, así que déjame darte algunos ejemplos de código de lo que quiero decir.

prueba.h :

... #define SOMETHING ... #ifdef SOMETHING inline void test_func(BYTE b); #endif ... 

prueba.c :

 #include "test.h" void somefunction(void) { ... #ifdef SOMETHING test_func(integer_value); #endif ... } 

main.c :

 #include "test.h" int main(void) { ... } inline void test_func(BYTE b) { // Do something with b } 

En resumen: test.h declaró una función, main.c define esa función y test.c llama a esa función.

es posible? ¿Cómo?

EDITAR:

El usuario declara la función en main.c cuando el comstackdor da un error o algo que no se declara esa función.

En resumen, debería ser posible hacer esto. Por qué ? El archivo que implementa una función no tiene que estar en un archivo de encabezado con el mismo nombre. El enlazador resolverá cualquier problema si hay alguno y se quejará si falta algo. Si el comstackdor se queja, entonces falta un archivo de encabezado o su definición de función de archivo de encabezado no coincide con lo que tiene en el archivo c.