在C中打印结构

我正在尝试打印一个在函数中作为参数出现的struct ,以便进行一些调试。

无论如何我可以在不知道它看起来的情况下打印结构的内容,即不显式打印每个字段? 你看,根据不同#define的负载,结构可能看起来非常不同,即可能有或没有不同的字段,所以我想找一个简单的方法来做一些像print_structure(my_structure)

NetBeans的调试器可以为我做到这一点,但不幸的是代码在我无法运行调试器的设备上运行。

有任何想法吗? 我想这是不可能的,但至少在编译时可能会有一些宏来做这件事吗?

谢谢!

您始终可以执行结构的hex转储:

 #define PRINT_OPAQUE_STRUCT(p) print_mem((p), sizeof(*(p))) void print_mem(void const *vp, size_t n) { unsigned char const *p = vp; for (size_t i=0; i 

在C中没有像RTTI这样的东西,只有解决方案(除了上面的hex转储)是#define dump函数和其他#defines,即。

 #if _DEBUG struct { ..... } #define STRUCT_DUMP(x) printf(.....) #else struct { ..... } // other version #define STRUCT_DUMP(x) printf(.....) // other version dump #endif