将结构成员NAME传递给C中的函数?

时间:2016-10-03 16:53:58

标签: c struct member

有没有简单的方法将结构成员的名称传递给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>);
}

1 个答案:

答案 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));
}