title: Preprocessor not using defined hashed value but definition string for macro
body: <p>I am trying to make an easy way of defining my IO. I'm trying to do this with a macro but I can't solve this problem.</p>
  
  <p>I did this:</p>
  
  <pre><code>// Buzzer PORT and PIN mapping
  #define BUZZER_PORT     B       // PORT
  #define BUZZER_PIN      2       // PCR pin
  #define BUZZER_ALT      1       // Pin alternativne function
  
  #define INIT_BUZZER(PORTX, PIN, ALT) { PORT##PORTX##_PCR(PIN) = PORT_PCR_MUX((ALT)) |     PORT_PCR_DSE_MASK;            GPIO##PORTX##_PDDR |= PIN&lt;&lt;1; }
  </code></pre>
  
  <p>Function call working:</p>
  
  <pre><code>INIT_BUZZER(B, BUZZER_PIN, BUZZER_ALT);
  </code></pre>
  
  <p>Function call wanted:</p>
  
  <pre><code>INIT_BUZZER(BUZZER_PORT, BUZZER_PIN, BUZZER_ALT);
  </code></pre>
  
  <p>If I call it with port argument BUZZER_PORT I get an error because compiler doesn't take my arguments value but string itself.</p>
  
  <p>How to deal with this?</p>