c - 打印结构的每个成员的名称

标签 c

<分区>

假设我有一个struct,它是这样定义的:

struct node {
  int a;
  char b;
};

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

最佳答案

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

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;
}

关于c - 打印结构的每个成员的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33253232/

相关文章:

c - 连接 int 和字符串时 sprintf 无法正常工作

c - 在c中打印双向链表的内容仅打印出第一个节点

c - 访问 c 中结构中的数组成员是访问值还是地址?

C:使用 token 粘贴展开宏

c - C 中的指针及其对数组的解释

python - 为什么 cffi 比 numpy 快这么多?

c++ - pthread 在分离线程上创建错误 11

c - 如何正确地将一定数量的多个字符的文件读入 C 中的 char 数组?

c - 使用 gets 防止缓冲区溢出

c - n & ~(n - 1) 这个函数有什么作用?