Skip to contentSkip to conversation

Coding technique question

DISCUSSION Timothy Miller 4 participants 5 messages Jun 16, 2003 – Jun 19, 2003

lore
Share & tools
lore
#0 lore raw

I believe I've seen this sort of thing done in the kernel:

do {
    ....
    code
    ....
} while (0);

What I was wondering is how this is any different from:

{
    ....
    code
    ....
}
#1 lore raw
Quoted 9 lines · Timothy Miller

I believe I've seen this sort of thing done in the kernel:

do {
    ....
    code
    ....
} while (0);
Quoted 7 lines

What I was wondering is how this is any different from:

{
    ....
    code
    ....
}

It's not... unless you're creating a function-like macro.

Jeff

#2 lore raw
In reply to Timothy Miller
Quoted 9 lines · Timothy Miller

I believe I've seen this sort of thing done in the kernel:

do {
     ....
     code
     ....
} while (0);
Quoted 7 lines

What I was wondering is how this is any different from:

{
     ....
     code
     ....
}

See the Kernel Newbies FAQ at http://kernelnewbies.org/faq/
Q: "Why do a lot of #defines in the kernel use do { ... } while(0)? "

Best regards,

Aschwin Marsman

--

aYniK Software Solutions         all You need is Knowledge
Bedrijvenpark Twente 305         NL-7602 KL Almelo - the Netherlands
P.O. box 134                     NL-7600 AC Almelo - the Netherlands
[email protected]              http://www.aYniK.com
#3 lore raw

Thank you for pointing this out to me. It's very interesting reading.

Quoted 36 lines · Aschwin Marsman
Quoted 9 lines · Timothy Miller

I believe I've seen this sort of thing done in the kernel:

do {
    ....
    code
    ....
} while (0);
Quoted 7 lines

What I was wondering is how this is any different from:

{
    ....
    code
    ....
}

See the Kernel Newbies FAQ at http://kernelnewbies.org/faq/
Q: "Why do a lot of #defines in the kernel use do { ... } while(0)? "

Best regards,

Aschwin Marsman

--

aYniK Software Solutions         all You need is Knowledge
Bedrijvenpark Twente 305         NL-7602 KL Almelo - the Netherlands
P.O. box 134                     NL-7600 AC Almelo - the Netherlands
[email protected]              http://www.aYniK.com
#4 lore raw
In reply to Aschwin Marsman

i-yi-yi.

/*
* Clarity concerning the
* do {
* ...
* } while (0);
* construct!
*/
#define MACRO_BLOCK_BEGIN do {
#define MACRO_BLOCK_END } while (0);

Quoted 6 lines

See the Kernel Newbies FAQ at http://kernelnewbies.org/faq/
Q: "Why do a lot of #defines in the kernel use do { ... } while(0)? "

Best regards,

Aschwin Marsman

Signature · 2 lines
David Nicol, independent consultant and contractor
                                        Senator Orrin Hatch rewinds his DVDs