打印每个成员的结构名称

时间:2015-10-21 07:21:59

标签: c

假设我有一个struct,它的定义如下:

struct node {
  int a;
  char b;
};

如何使用指针或其他东西查找和打印每个结构成员名称? (此处输出示例:ab

2 个答案:

答案 0 :(得分:4)

成员名称在运行时是未知的,因此您不能(除非您手动指定它们)。

X Macros可以提供帮助:

#include <stdio.h>

#define NODE_MEMBERS \
X(int a, "a")        \
X(char b, "b")

#define X(a, b) a;
struct node {
    NODE_MEMBERS
};
#undef X

#define X(a, b) b,
char *node_member_name[] = {
    NODE_MEMBERS
};
#undef X

int main(void)
{
    printf("%s, %s\n", node_member_name[0], node_member_name[1]);
    return 0;
}

答案 1 :(得分:1)

这是不可能的C.你找不到你不知道定义的结构的所有成员,并且你不能在不知道它的情况下打印变量的名称。