title: What would make C++ preprocessor macros an accepted development tool?
body: <p><a href="https://stackoverflow.com/questions/96196/when-are-c-macros-beneficial">Apparently</a> the preprocessor macros in C++ are</p>
  
  <blockquote>
    <p>justifiably feared and shunned by the C++ community.</p>
  </blockquote>
  
  <p>However, there are several cases where <a href="https://stackoverflow.com/questions/96196/when-are-c-macros-beneficial">C++ macros are beneficial</a>.</p>
  
  <p>Seeing as preprocessor macros can be <a href="http://www.boost.org/doc/libs/1_47_0/doc/html/foreach.html" rel="nofollow noreferrer">extremely useful</a> and <a href="https://stackoverflow.com/questions/96196/when-are-c-macros-beneficial/96316#96316">can reduce repetitive code</a> in a very straightforward manner --</p>
  
  <p>-- leaves me with the question, what exactly is it that makes preprocessor macros "evil", or, as the question title says, <strong>which feature (<em>or removal of feature</em>) would be needed from preprocessor macros to make them useful as a "good" development tool</strong> (instead of a fill-in that everyone's ashamed of when using it). (After all, the Lisp languages seem to embrace macros.)</p>
  
  <p><em>Please Note</em>: This is <em>not</em> about <code>#include</code> or <code>#pragma</code> or <code>#ifdef</code>. This is about <code>#define MY_MACRO(...) ...</code></p>
  
  <p><sub>Note: I do not intend for this question to be subjective. Should you think it is, feel free to vote to move it to programmers.SE.</sub></p>