皆さんの意見を参考にしつつ、自分でも考えてみました。
----------------------------------------
// プリプロセス
void preprocess_A();
void preprocess_B();
typedef void (*ppfunc)(); // プリプロセス関数型

int preprocess( int a, ppfunc *p )
{
 int lp; // ループ回数
 switch ( a ) {
 case 1234:
  *p = preprocess_A;
  lp = 500;
  break;
 case 5678:
  *p = preprocess_B;
  lp = 1000;
  break;
 default:
  *p = NULL;
  lp = 1;
 }
 return lp;
}
// 続く↓