Is this a good/correct way to write a robust C program?//File1 => Module1.cstatic int Fun(int);struct{int (*pFn)(int)}Interface;static int Fun(int){//do something}Interface* Init(void){  Interface *pInterface = malloc(sizeof(Interface));  pInterface->pFn = Fun;  return pInterface;}//File 2 main(){  Interface *pInterface1 = Init();  pInterface1->pFn(5);}My intention is to make each module expose an interface.  Give your thoughts.
Making each module expose an interface
c