如何在C中自动打印结构值(如gdb ptype)?

时间:2011-09-19 04:38:03

标签: c printing structure

这个问题长期存在于我的脑海中。     我们知道,我们在调试时可以很容易地在GDB中打印数据结构,就像gdb ptype命令一样,它可以输出结构的所有字段值。我知道GDB使用bfd库来读取目标文件中的符号信息。     我的问题是:如果我想在我的C源代码中执行此操作,该怎么办?因为我不想逐个打印每个结构的字段。是否有任何存在的库来解决这个问题?     我认为该库不仅符合我的要求,在编写C / C ++代码时对许多其他程序员来说非常有用。

2 个答案:

答案 0 :(得分:0)

就C而言,这样的库不可能存在。

您可以做的是编写一种编译器类型的工具,该工具在某种语言中使用struct描述,并在C中生成带有struct声明的头文件,以及带有打印代码的源文件。这样的工具确实存在(例如protobuf-c),但它们主要面向有效的二进制序列化,而不是人类可读的C数据表示。

答案 1 :(得分:0)

我不认为有为C广泛使用的这种工具。但是,您可以尝试编写一个函数来承担负担并在需要时调用它。我知道一个函数不能打印各种类型的结构,你必须为每种类型的结构构建每个结构,但它仍然是一个更好的想法,而不是坚持旧的规则,每次都写。