Its not because of optimization. This is done to convert a multiline
expression into a single line  expression so that it does not break if-else
functionality.



On Dec 26, 2007 11:44 AM, sahlot arvind <[EMAIL PROTECTED]> wrote:

> Recently I started looking into linux kernel and trying to understand the
> code.
> I am working with linux-2.6.9.
> in file include/llinux/list.h - I found something like this.
>
> #define INIT_LIST_HEAD(ptr) do { \
>         (ptr)->next = (ptr); (ptr)->prev = (ptr); \
> } while (0)
>
>
> My question is why do we use a loop when we actually know that it is not
> going to execute more than once? Cannot we simply do -
>
> #define INIT_LIST_HEAD(ptr)    {(ptr)->next = (ptr); (ptr)->prev = (ptr)}
>
> Do we get some kind of optimization by using while (0)?
>
>
> Thanks
>
>
>



-- 
Dinesh Bansal
The Law of Win says, "Let's not do it your way or my way; let's do it the
best way."

Reply via email to