有没有简单的方法将结构成员的名称传递给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>);
}
Run Code Online (Sandbox Code Playgroud)
不确定这是否正是您正在寻找的,但这是一个非常接近的解决方案,使用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));
}
Run Code Online (Sandbox Code Playgroud)