c definir arrays en estructura con diferentes tamaños

Necesito definir una estructura para dos tipos de objetos. Ambos tienen exactamente la misma estructura de datos y realizan las mismas tareas (métodos de miembro).

La ÚNICA diferencia es que los tamaños de matriz son diferentes en los dos tipos, uno que usa SIZE_A y el otro SIZE_B.

No se desea duplicar la definición de la estructura y funciones.

¿Cómo podría usar un tipo de 'estructura', e inicializar sus matrices con diferentes tamaños?

#define SIZE_A 100
#define SIZE_B 200

typedef struct{
  int matr[SIZE_A][SIZE_A];  // for another type matr[SIZE_B]
  int arr[SIZE_A];           // for another type arr[SIZE_B]
  int size;                  // will be initialized to SIZE_A or SIZE_B
  int var1, var2;
}s;

void task1(s* si){
  ...
}

void task2(s* si){
  ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta