JargonFile/entries/fall through.txt

22 lines
1.3 KiB
Plaintext

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) { caseGREEN: do_green(); break; casePINK:
do_pink(); /*FALLTHROUGH*/ caseRED: 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.