Typecheck elements of 'macros' parameter in 'gen_preprocess_options().
diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py
index 0e50533..2a80739 100644
--- a/Lib/distutils/ccompiler.py
+++ b/Lib/distutils/ccompiler.py
@@ -450,6 +450,14 @@
 
     pp_opts = []
     for macro in macros:
+
+        if not (type (macro) is TupleType and
+                1 <= len (macro) <= 2):
+            raise TypeError, \
+                  ("bad macro definition '%s': " +
+                   "each element of 'macros' list must be a 1- or 2-tuple") % \
+                  macro
+
         if len (macro) == 1:        # undefine this macro
             pp_opts.append ("-U%s" % macro[0])
         elif len (macro) == 2: