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

use*_*917 6 c printing structure

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

n. *_* m. 0

对于C 来说,这样的库是不可能存在的。

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