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