使用container_of宏的使用,结构
我遇到了使用container_of的一件代码。
typedef struct api_1 api_2;
typedef void (*api_set)(api_2 *api, int a);
struct api_1{
api_set set;
};
typedef struct{
api_2 api;
int value;
} api_p_t;
void set(api_2 *api, int a){
api_p_t *priv_api = container_of(api, api_p_t, api);
priv_api->value = a;
}
请向我解释,为什么“ container_of(API,API_P_T,API)”使用参数“ API”两次?是某种多态性行为吗?
I came across piece of code that uses container_of.
typedef struct api_1 api_2;
typedef void (*api_set)(api_2 *api, int a);
struct api_1{
api_set set;
};
typedef struct{
api_2 api;
int value;
} api_p_t;
void set(api_2 *api, int a){
api_p_t *priv_api = container_of(api, api_p_t, api);
priv_api->value = a;
}
Please explain me, why "container_of(api, api_p_t, api)" uses parameter "api" twice? Is it some kind of polymorphic behaviour?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
显然,这是Linux内核宏:
因此,第一个
api
是api_2
指针命名api
,它作为参数传递给了函数。第二个api
是api_p_t
成员名为api
。Apparently this is a Linux Kernel macro:
So, the first
api
is theapi_2
pointer namedapi
that is passed in as a parameter to the function. The secondapi
is theapi_p_t
member namedapi
.