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."