Deferred macro definitions are ‘@m’ (or, equivalently, ‘@#define’) commands that appear in the code part rather than the usual definition part. These definitions are evaluated during the output (phase 2), and can cause confusion when used with the preprocessor commands, which are evaluated during the input (phase 1). Because of this confusion, deferred macro definitions are prohibited by default. To permit them, use the ‘-TD’ option (then be prepared to make some obscure programming errors).