Aux fins de la vérification du type je voudrais définir une fonction sur les lignes deExiste-t-il un bon moyen de forcer l'incompatibilité de type en C?
void myfunc(type1 a, type2 b)
{
...
}
où type1
et type2
sont tous deux typedefed à uint8_t
. Jusqu'ici tout va bien, mais pour des raisons de santé et de vérification (pensez à DbC), je voudrais éviter que la fonction soit appelée avec une valeur type2
pour le premier paramètre ou une type1
pour la seconde. Malheureusement, le typecasting implicite de C est contre moi ici. Est-ce que quelqu'un connaît un moyen?
Ce n'est pas la typecasting implicite de C contre vous. Vous auriez le même problème en C++. Par définition, l'utilisation d'un typedef est identique à l'utilisation du type typedef. – Amnon
Vous pouvez également jeter un coup d'oeil sur: http://stackoverflow.com/questions/376452/enforce-strong-type-checking-in-c-type-strictness-for-typedefs – quinmars
Également en cours de discussion ici http: // stackoverflow .com/questions/18108046/prevent-automatic-cast-with-integers (pour C++ mais ils vont partager quelques idées) – doctorlove