¡ Gracias por las respuestas !
Utilizando la sobrecarga de funciones me ha funcionado como yo quería. Me queda la duda de asignar valores por defecto a los parámetros que no hemos pasado a la/las funciones. Lo he resuelto de una manera un poco cutre llamando desde una función a la otra con valores por defecto. Funcionar funciona pero no se si hay alguna manera más elegante. Lo que he hecho es:
int funcion(a,b); // Función con dos parámetros
int funcion(a,b,c); // Sobrecarga con tres parámetros
int funcion(a,b) { // Llamada con dos parámetros
return funcion(a, b, ValDefecto_c); // Llama a la de tres con un valor por defecto para c
}
Gracias a todos!