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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-dev