A ParameterPassing mode where parameters to a function are not evaluated until they are used; and are re-evaluated each time they are used. Compare with LazyEvaluation and StrictEvaluation (but notice difference of opinion on LazyEvaluation).
Found in:
- Macro systems in many languages
- CallByName
- 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
CeePreprocessorStatements.
CategoryLanguageFeature