假设我有一个struct
,它的定义如下:
struct node {
int a;
char b;
};
如何使用指针或其他东西查找和打印每个结构成员名称? (此处输出示例:a
和b
。
答案 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.你找不到你不知道定义的结构的所有成员,并且你不能在不知道它的情况下打印变量的名称。