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?. CU Peter