Existe uma boa maneira de forçar a incompatibilidade de tipos em C?

Para fins de verificação de tipo, eu gostaria de definir uma função nas linhas de

void myfunc(type1 a, type2 b)
{
...
}

Ondetype1 etype2 ambos são digitados comouint8_t. Até agora tudo bem, mas para fins de sanidade e verificação (pense em DbC), gostaria de impedir que a função fosse chamada com umtype2 valor para o primeiro parâmetro ou umtype1 para o segundo. Infelizmente, a tipografia implícita de C é contra mim aqui. Alguém sabe de uma maneira?

questionAnswers(2)

yourAnswerToTheQuestion