// main.c
#include "s.h"
R *func1(A *a, B *b, C *c) {
  // 処理
  return Rのポインタ;
}
R *func2(A *a, B *b, C *c) {
  // 処理
  return Rのポインタ;
}
int main() {
  S s1, s2;
  s1.func = func1;
  s2.func = func2;
  caller(s1);
  caller(s2);
  return 0;
}

…と、こんな感じのことがしたいです
(ヘッダの使い方が間違ってたりするのは実際書くとき直します)
関数ポインタは全然書き方が分からなくて文法がおかしいと思いますが
その関数ポインタ関連の正しい書き方が分からなくて…