Ich verstehe nicht, warum hier überladene Funktionen gebraucht werden, auch varargs schein hier überdosiert.

1. Wenn ein Anwender 3 Servos ansteuern will, kann er zB eine Servo-FUnktion 3x aufrufen
2. Besser ist hier wohl: Der Anwender ruft die Funktion mit der Anzahl der Servos auf und liefert ein Array mit Servo-Daten mit:

Code:
typedef
{
   ...
} servo_t;

void servo_func (int n_servos, servo_t * servos);
In servo_func arbeitet man alle Servos ab, fährt zB alls synchron von A nach B oder so.

Zudem kann man die Anzahl der Servos in der Endanwendung immer als Konstante annehmen.

Code:
#include "servo.h"

servo_t serv[] = 
{
   [0] = { ...},
   [1] = { ...},
   ...
};

... servo_func (sizeof (serv) / sizeof (serv[0]), serv);