web-dev-qa-db-fra.com

Imprimer une structure en C

J'essaye d'imprimer un struct qui vient comme argument dans une fonction afin de faire du débogage.

Est-il possible que je puisse imprimer le contenu d'une structure sans savoir à quoi il ressemble, c'est-à-dire sans imprimer chaque champ explicitement? Vous voyez, en fonction des charges de différents #define S, la structure peut être très différente, c'est-à-dire avoir ou non des champs différents, alors j'aimerais trouver un moyen facile de faire quelque chose comme print_structure(my_structure).

Le débogueur de NetBeans peut le faire pour moi, mais malheureusement, le code s'exécute sur un appareil sur lequel je ne peux pas exécuter de débogueur.

Des idées? Je suppose que ce n'est pas possible, mais au moins il peut y avoir une macro pour le faire au moment de la compilation ou quelque chose?

Merci!

19
Albus Dumbledore

Il n'y a rien de tel que RTTI en C, la seule solution (à part le vidage hexadécimal comme ci-dessus) est de #define la fonction de vidage avec d'autres #defines, ie.

#if _DEBUG

struct { ..... }
#define STRUCT_DUMP(x) printf(.....)

#else

struct { ..... } // other version
#define STRUCT_DUMP(x) printf(.....)    // other version dump

#endif
1
pma_