gpt4 book ai didi

c - 这个内核代码是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 11:48:54 25 4
gpt4 key购买 nike

我在旧的内核代码中发现了这个:

#define hlist_for_each_entry(tpos, pos, head, member)                    \
for (pos = (head)->first; \
pos && \
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
pos = pos->next)

但我不明白我应该如何解释这一行的意思:

({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;});

编译器如何理解大括号/圆括号内的多个表达式的含义(({...;...;}) 构造)?

最佳答案

好像是这个构造

({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;});

基于编译器自己的语言扩展,允许在表达式中使用复合语句。它类似于 C++ 中的 lambda 表达式。

我认为构造的评估结果值为 1。

在我看来,这只是一个糟糕的代码,因为可以使用逗号运算符来编写相同的代码

pos && ( ( tpos = hlist_entry(pos, typeof(*tpos), member) ), 1 ); \
pos = pos->next)

关于c - 这个内核代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31963198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com