Hey everyone,

When guarding code with macros that are always defined, such as ASSERT_DISABLED 
(it's always either 0 or 1), we have a choice between:

        if (!ASSERT_DISABLED) {
            // do things
        }

and:

#if !ASSERT_DISABLED
        // do things
#endif

I'd like to propose that anytime the normal if would be semantically equivalent 
to the preprocessor #if, the normal if should be used.

We don't lose any compiler optimization, since even at -O0, the compiler will 
constant fold the normal if.  We do gain a lot of clarity, since the control 
flow of normal if statements is subject to proper indentation.

The "semantically equivalent" requirement still allows for #if to be used for 
thinngs like:

- Guarding the placement of fields in a class.
- Guarding the definitions of other macros (in the case of ASSERT_DISABLED, we 
define ASSERT in different ways guarded by #if's)
- Guarding the definition/declaration/inclusion of entire functions, classes, 
and other top-level constructs.

Thoughts?

-Phil

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to