[linux-dvb] Re: [PATCH] LGDT3302 Frontend Driver

Michael Krufky mkrufky at m1k.net
Tue Jun 28 17:51:58 CEST 2005


Peter Beutner wrote:

> Michael Krufky schrieb:
>
>> Peter Beutner wrote:
>>
>>> Ben Dooks schrieb:
>>>
>>>>> I dont see why the code you posted above will break with dprintk 
>>>>> defined like this:
>>>>> #define dprintk(args...) if (debug) printk(KERN_DEBUG "lgdt3302: " 
>>>>> args)
>>>>>
>>>>> Imo:
>>>>>
>>>>> if(foo)
>>>>>     if (debug) printk(KERN_DEBUG "lgdt3302: " args);
>>>>> else
>>>>>     bar();
>>>>>
>>>>> should work like intended.
>>>>
>>>> The else will be part of the if (debug), not the if (foo) as
>>>> intended. This means that changing the dprintk macro would
>>>> end up breaking a number of things. Best to avoid these problems
>>>> in the first place.
>>>
>>> I see. Thx for the explanation.
>>
>> Doesn't this cover all bases:
>>
>>  #define dprintk(args...) { if (debug) printk(KERN_DEBUG "lgdt3302: " 
>> args); }
>
> No,
> this would resolve to:
>
> if(foo)
>     { if (debug) printk(KERN_DEBUG "lgdt3302: " args); };
> else
>     bar();
>
> where gcc would complain about the semicolon before else
> with a: syntax error before »else«.

Okay, in that case, I will revert back to the following:

#define dprintk(args...) \
do { \
if (debug) printk(KERN_DEBUG "lgdt3302: " args); \
} while (0)


This is how it was originally, and Johannes said that this is 
acceptable. Any objections?

-- 
Michael Krufky






More information about the linux-dvb mailing list