title: how does gcc deal with defines that use operators on other defines
body: <p>If I have the follow snippet in my header file:</p>
  
  <pre><code>#define banana 4
  #define orange 2
  
  #define fruit banana|orange
  </code></pre>
  
  <p>Is the compiler smart enough to just use 6 wherever "fruit" appears in the program?</p>
  
  <p>I assume so, but I hate to assume.  It's idiotic that it would perform a boolean OR between 2 constant numbers every time.</p>
  
  <p>If so, ditto with other operators? e.g. banana * orange, etc</p>