Comment puis-je vérifier si une variable est d'un certain type (comparer les deux types) en C?

En C (pas C++/C#) comment puis-je vérifier si une variable est d'un certain type?

Par exemple, quelque chose comme ceci:

double doubleVar;
if( typeof(doubleVar) == double ) {
    printf("doubleVar is of type double!");
}

Ou plus générale: Comment comparer les deux types de sorte que compare(double1,double2) sera évaluée à true, et compare(int,double) sera false. Je tiens aussi à comparer les structures de composition différente ainsi.

En gros, j'ai une fonction qui fonctionne sur des variables de type "struct" et de "struct b". Je veux faire une chose avec la "struct un" variables et l'autre avec le "struct b" des variables. Depuis C ne supporte pas la surcharge et la void pointeur de la perte des informations de type j'ai besoin de vérifier pour le type. BTW, quel serait le sens d'avoir un typeof opérateur, si vous ne pouvez pas comparer les types?


La sizeof méthode semble être une solution de rechange pratique pour moi. Merci pour votre aide. Je trouve toujours ça un peu étrange, car les types sont connus au moment de la compilation, mais si j'imagine que le processus dans la machine, je peux voir, pourquoi l'information n'est pas stockée en termes de types, mais plutôt en termes de taille en octets. La taille est la seule chose vraiment pertinentes en plus des adresses.

  • Ne pouvez-vous pas de vous jeter à un double (et ajouter 0.00)? Vous ne savez pas si c'est possible en C, juste une suggestion.
  • Regarder dans le code source, il indique là que doubleVar est un double. Pas besoin(et pas possible non plus) pour le vérifier au moment de l'exécution.
  • En réponse à Edit #1: avez-vous envisagé d'utiliser des pointeurs de fonction (comme une vtable) pour résoudre votre problème?
  • Si vous aimez le sizeof methode, de lire cet article à propos de la tgmath mise en œuvre de la gcc.
  • Foukarakis pourriez-vous fournir un exemple?
InformationsquelleAutor con-f-use | 2011-06-08