On Sun, Dec 13, 2009 at 09:53:42PM +0100, Carsten Breuer wrote:

> What I dislike most:
> 
> Missing brackets:
> 
> if (FOO_BAR)
>     do_something
> 
> It should be
> 
> if (FOO_BAR)
> {
>     do:something
> }
> 
> because if do_something is defined like follows:
> 
> #define do_something a=10; b = 20;
> 
> Then the resulting code is really:
> 
> if (FOO_BAR)
> {
>     a=10;
> }
> b = 20;
> 
> Lint would complain about this.

You could also argue that the do_something definition is buggy, since
it's not one statement.

E.g. the Linux kernel takes this stance, and wraps such macros in do
{ } while (0) blocks:

        #define local_irq_enable() \
                do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0)
        #define local_irq_disable() \
                do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0)
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to