2009-11-25 32 views
2

为了调试目的,我发现显示数据结构的内容很有用。 (例如,在Python中,我只会执行“print some_dict_name”)。简单的方法来显示C中的数据结构的内容?

这可以通过使用标准库在C这么简单的情况下实现吗,还是我必须根据数据结构自己实现呢?

考虑下面的代码,我必须再次遍历StructArray以显示它的所有内容。

#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

感谢您对代码示例的评论。当我写它时,我觉得它有点太晚了:-) – zlack 2009-11-26 06:09:31

回答

8

您需要根据数据类型自行实施。
C没有可以动态或静态访问每种类型的每个部分的类型系统。

如果你用gdb之类的东西进行实时调试,它的智能足以读取调试信息和打印类型内容。但是你不能从程序本身做到这一点,对于C类型没有反省的内容。

1

一个非常糟糕的方式是编译你的程序和调试信息,并在程序中建立一个调试库,以便在运行时从程序本身读取调试信息。解析应该解析的内容,并相应地打印结构。

虽然这是一个项目。

0

或者,您可以使用类似DDD这样的数据显示调试器。

相关问题