2003-06-16 19:35:26

by Timothy Miller

[permalink] [raw]
Subject: Coding technique question

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




2003-06-16 19:42:16

by Jeff Garzik

[permalink] [raw]
Subject: Re: Coding technique question

On Mon, Jun 16, 2003 at 04:03:31PM -0400, Timothy Miller wrote:
> 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
> ....
> }

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

Jeff



2003-06-16 19:47:34

by Aschwin Marsman

[permalink] [raw]
Subject: Re: Coding technique question

On Mon, 16 Jun 2003, Timothy Miller wrote:

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

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

2003-06-16 19:55:01

by Timothy Miller

[permalink] [raw]
Subject: Re: Coding technique question

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


Aschwin Marsman wrote:
> On Mon, 16 Jun 2003, Timothy Miller wrote:
>
>
>>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
>> ....
>>}
>
>
> 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
>
>
>


2003-06-19 02:02:36

by david nicol

[permalink] [raw]
Subject: Re: Coding technique question


i-yi-yi.



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





> 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

--
David Nicol, independent consultant and contractor
Senator Orrin Hatch rewinds his DVDs