在include / linux / sched.h中,一个重要的任务状态更改函数是:
#define __set_task_state(tsk, state_value) \
do { (tsk)->state = (state_value); } while (0)
#define set_task_state(tsk, state_value) \
set_mb((tsk)->state, (state_value))
正如您所看到的,在#define __set_task_state(...)中有一个while()结构。
现在我的问题是,它是否就像任何其他C do-while循环代码一样 - 或者它是否具有特殊属性,因为它是在#define宏中定义的?
由于