mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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




  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®