在C中显示数据结构内容的简便方法?

时间:2009-11-25 21:48:19

标签: c data-structures

出于调试目的,我发现显示数据结构的内容很有用。 (例如,在Python中,我只是“打印some_dict_name”)。

这可以通过使用标准库在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;
}

3 个答案:

答案 0 :(得分:8)

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

如果您正在使用像gdb这样的东西进行实时调试,它的智能足以读取调试信息和打印类型内容。但是你不能从程序本身那里做到这一点,没有对C类型进行内省的事情。

答案 1 :(得分:1)

一种真正的hackish方式是使用调试信息编译程序,并在程序中构建一个调试库,以便在运行时从程序本身读取调试信息。解析应该从中解析的内容,并相应地打印结构。

这是一个独立的项目。

答案 2 :(得分:0)

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