2009-11-25 1 views
2

À des fins de débogage, je trouve utile d'afficher le contenu des structures de données. (En Python par exemple, je ferais simplement "print some_dict_name").moyen facile d'afficher le contenu des structures de données en C?

Est-ce que cela peut aussi être réalisé facilement en utilisant une bibliothèque standard, ou est-ce que je dois l'implémenter moi-même en fonction de la structure de données?

Considérons le code suivant, où je dois à nouveau parcourir le StructArray pour afficher tout son contenu.

#include <stdio.h> 

struct SomeStruct { 
    int id; 
    }; 

int main() { 
    struct SomeStruct StructArray[10]; 
    int x = 0; 

    for (x = 0; x < 10; x++) { 
    StructArray[x].id = x; 
    } 

    for (x = 0; x < 10; x++) { 
    printf("StructArray[%d].id = %d\n", x, StructArray[x].id); 
    } 
    return 0; 
} 
+0

Merci pour les commentaires sur l'exemple de code. Je minis c'était un peu trop tard quand je l'ai écrit :-) – zlack

Répondre

8

Vous devez l'implémenter vous-même par type de données.
C ne possède pas de système de type où vous pouvez visiter de manière dynamique ou statique chaque partie de chaque type.

Si vous êtes en train de déboguer en direct avec quelque chose comme gdb, il est suffisamment intelligent pour lire les informations de débogage et le contenu du type d'impression. Mais vous ne pouvez pas faire cela à partir du programme lui-même, il n'y a pas d'introspection pour les types C.

1

Une manière vraiment hackish serait compiler votre programme avec des informations de débogage, et construire une bibliothèque de débogage dans le programme pour lire les informations de débogage du programme lui-même en exécution. Analysez ce qui doit être analysé et imprimez la structure en conséquence.

C'est un projet à part entière.

0

Ou, vous pouvez utiliser quelque chose comme DDD, le débogueur d'affichage de données.