Contents page

Index (83KB)

fall through


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.