|
fall through
v. (n. `fallthrough', var. `fall-through') 1. To
exit a loop by exhaustion, i.e., by having fulfilled its exit condition
rather than via a break or exception condition that exits from the
middle of it. This usage appears to be _really_ old, dating from the
1940s and 1950s. 2. To fail a test that would have passed control to a
subroutine or some other distant portion of code. 3. In C, `fall-through'
occurs when the flow of execution in a switch statement reaches a `case'
label other than by jumping there from the switch header, passing a point
where one would normally expect to find a `break'. A trivial example:
switch (color) { case GREEN:
do_green(); break;
case PINK:
do_pink(); /* FALL THROUGH */
case RED:
do_red(); break;
default:
do_blue(); break;
}
The variant spelling `/* FALL THRU */' is also common.
The effect of the above code is to `do_green()' when color is
`GREEN', `do_red()' when color is `RED', `do_blue()' on any other color
other than `PINK', and (and this is the important part) `do_pink()' _and
then_ `do_red()' when color is `PINK'. Fall-through is {considered
harmful} by some, though there are contexts (such as the coding of
state machines) in which it is natural; it is generally considered good
practice to include a comment highlighting the fall-through where one
would normally expect a break. See also {Duff's device}.
|