A Parameter Passing mode where parameters to a function are not evaluated until they are used; and are re-evaluated each time they are used. Compare with Lazy Evaluation and Strict Evaluation (but notice difference of opinion on Lazy Evaluation).
Found in:
Macro systems in many languages
Looping constructs in many languages; in the statement while(x) y; the x part is evaluated at least once (and possibly an infinite number of times); the y part is evaluated zero or more times.
Care must be taken when expressions containing side effects are passed to functions/macros that have normal order evaluation. C/C++ programmers have long known to be very careful with macros defined by Cee Preprocessor Statements.
See original on c2.com