|
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.
|