From: Kyle Moffett <mrmacman_g4@mac.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Tony Lindgren <tony@atomide.com>,
Christian Hesse <mail@earthworm.de>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Dynamic tick for x86 version 050602-2
Date: Sat, 11 Jun 2005 13:59:42 -0400 [thread overview]
Message-ID: <151D7A8F-26C2-41D3-9FC5-BC9A45F5AA85@mac.com> (raw)
In-Reply-To: <20050610091515.GH4173@elf.ucw.cz>
On Jun 10, 2005, at 05:15:15, Pavel Machek wrote:
> Hi!
>>> do {} while (0)
>>>
>>> , else you are preparing trap for someone.
>>>
>>
>> Can you please explain what the difference between these two are?
>> Some compiler version specific thing?
>>
>
> It took me quite some remembering. Problem is that with your macros,
> someone can write
>
> dyn_tick_reprogram_timer()
> printk();
>
> [notice missing ; at first line], and still get it compile. If you
> replace {} with do {} while (0), he'll get compile error as he should.
Actually, the real reason is for something like this:
#define myfunc1() {}
#define myfunc2() {}
if (a && b) myfunc1();
else myfunc2();
This would be translated as:
if (a && b) {};
else {};
Which would generate a syntax error:
zeus:~ kyle$ gcc -c `y -e .c` -o tmp.o <<'EOF'
> #define myfunc1() {}
> #define myfunc2() {}
> void x() {
> int a = 0, b = 1;
> if (a && b) myfunc1();
> else myfunc2();
> }
> EOF
/tmp/y.c8F08d.c: In function ‘x’:
/tmp/y.c8F08d.c:4: error: parse error before "else"
Cheers,
Kyle Moffett
next prev parent reply other threads:[~2005-06-11 18:00 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-02 1:36 [PATCH] Dynamic tick for x86 version 050602-1 Tony Lindgren
2005-06-02 1:54 ` Zwane Mwaikambo
2005-06-02 2:09 ` Tony Lindgren
2005-06-02 8:30 ` Christian Hesse
2005-06-02 17:42 ` [PATCH] Dynamic tick for x86 version 050602-2 Tony Lindgren
2005-06-02 20:03 ` Christian Hesse
2005-06-02 20:32 ` Tony Lindgren
2005-06-03 6:08 ` Christian Hesse
2005-06-03 17:39 ` Tony Lindgren
2005-06-04 12:51 ` Christian Hesse
2005-06-10 4:03 ` Tony Lindgren
2005-06-05 4:06 ` Bernard Blackham
2005-06-10 4:05 ` Tony Lindgren
2005-06-03 22:37 ` Pavel Machek
2005-06-03 22:47 ` Pavel Machek
2005-06-10 4:17 ` Tony Lindgren
2005-06-10 9:15 ` Pavel Machek
2005-06-10 15:17 ` Tony Lindgren
2005-06-10 22:15 ` [PATCH] Dynamic tick for x86 version 050610-1 Tony Lindgren
2005-06-18 3:34 ` hugang
2005-06-18 6:30 ` Benjamin Herrenschmidt
2005-06-21 1:28 ` Tony Lindgren
2005-06-21 1:49 ` Benjamin Herrenschmidt
2005-06-21 2:21 ` Tony Lindgren
2005-07-19 6:51 ` hugang
2005-07-19 13:51 ` Benjamin Herrenschmidt
2005-07-25 10:11 ` Tony Lindgren
2005-06-11 17:59 ` Kyle Moffett [this message]
2005-06-07 20:36 ` [PATCH] Dynamic tick for x86 version 050602-1 Jonathan Corbet
2005-06-10 4:18 ` Tony Lindgren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=151D7A8F-26C2-41D3-9FC5-BC9A45F5AA85@mac.com \
--to=mrmacman_g4@mac.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mail@earthworm.de \
--cc=pavel@ucw.cz \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®