Imprimer la structure des champs et des valeurs dans C
Je suis intéressé par l'impression de la structure des champs .
Typedef struct
{
UINT32 thread_id;
BOOL is_valid;
}T_THREAD;
Est-il un moyen en langage "C" pour imprimer le contenu d'une structure, quelque chose comme
ex: print (T_THREAD)
et de sortie devrait être comme
Contents of a structure T_THREAD are
thread_id
is_valid
Voulez-vous imprimer les valeurs d'une instance spécifique ou à la présentation de la structure générale? (Si la réponse est non de toute façon, vous devez le faire vous-même)
Je voudrais imprimer la mise en page de la structure générale. Si j'ai ajouter un peu plus de champs de la structure, puis mon printf devrait être en mesure d'imprimer le nouveau ajouté.
Je voudrais imprimer la mise en page de la structure générale. Si j'ai ajouter un peu plus de champs de la structure, puis mon printf devrait être en mesure d'imprimer le nouveau ajouté.
OriginalL'auteur user3555115 | 2016-12-23
Vous devez vous connecter pour publier un commentaire.
Ce que vous cherchez est la réflexion. Java et d'autres virtuel langues a la réflexion de sorte que vous pouvez imprimer les noms de variables et les noms de fonction pour toute la classe. Parce que le compilateur crée ces réflexion fonctions automatiquement.
C n'a pas de réflexion. Vous devez tout faire manuellement.
OriginalL'auteur Sanchke Dellowar
Comme pour votre structure, la fonction devrait ressembler à quelque chose comme ça..
struct *st
? Il devrait êtreT_THREAD *st
. Et si vous changez qu'il est évident quest_name
n'est pas nécessairemerci @IngoLeonhardt, pour indiquer que..
OriginalL'auteur Hawk
Non, il n'y a pas de standard/pré-définis façon de réaliser ce que vous voulez.
Oui, cependant, vous pouvez écrire votre propre fonction, qui a connaissance de l' élément de la structure de valeurs être imprimé, et puis, avec un seul appel à la fonction avec une instance particulière de la variable de structure, vous pouvez obtenir toutes les valeurs de tous les membres de papier. Quelque chose comme
devrait être en mesure d'imprimer les valeurs.
Cependant, veuillez noter que cette ne pas vous permettre d'imprimer la variable noms de toutes façons, seuls les "valeurs".
OriginalL'auteur Sourav Ghosh
Il n'y a aucun moyen que vous pouvez imprimer tous les éléments de structure avec un seul
printf
déclaration. En C, vous devez les imprimer tous manuellement. Voici un exemple de création de deux membres de structure, et de les imprimer:De sortie:
Alternativement, vous pouvez créer une fonction pour faire cela aussi:
printf("\nContents of a structure %s are:\nthread_id: %d\nis_valid: %d\n", T->name, T->thread_id, T->is_valid);
Bien sûr, vous pouvez 🙂
OriginalL'auteur RoadRunner