在C中打印结构

Alb*_*ore 19 c printing struct

我试图struct在函数中打印一个作为参数的东西,以便进行一些调试.

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

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

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

谢谢!

Fre*_*Foo 24

您始终可以执行结构的十六进制转储:

#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<n; i++)
        printf("%02x\n", p[i]);
    putchar('\n');
};
Run Code Online (Sandbox Code Playgroud)

  • 我强烈不同意将多个三元运算符塞入参数的概念"更好". (2认同)