有没有简单的方法将结构成员的名称传递给C中的函数?例如,如果我想实现这一目标:
(我知道代码不正确,我只是用它来解释这个问题)
struct Test
{
int x;
int y;
};
int main()
{
struct Test t;
t.x = 5;
t.y = 10;
example(t, <MEMBER NAME>);
}
void example(struct Test t, <MEMBER NAME>)
{
printf("%d", t.<MEMBER NAME>);
}
答案 0 :(得分:6)
不确定这是否与您正在寻找的完全相同,但这是使用offsetof
的非常接近的解决方案:
struct Test
{
int x;
int y;
};
void example(void *base, size_t offset)
{
int *adr;
adr = (int*)((char*)base + offset);
printf("%d\n", *adr);
}
int main(int argc, char **argv)
{
struct Test t;
t.x = 5;
t.y = 10;
example(&t, offsetof(struct Test, y));
}