title: Defined() operator not recognized by the compiler when used with the ## operator
body: <p>My purpose is to have a macro that returns a pointer to a variable (&amp;LPUART(id)_handle) that might or might not be declared, in the latter case the pointer should be a nullptr</p>
  <pre><code>#define NUMBER_OF_UARTS defined(LPUART1_PERIPHERAL)+defined(LPUART2_PERIPHERAL)
  #define GET_UART_HANDLE_POINTER(id) defined(LPUART##id##_PERIPHERAL)?&amp;LPUART##id##_handle:nullptr
  </code></pre>
  <p>Problem is that the compiler throws</p>
  <blockquote>
  <p>error: 'defined' was not declared in this scope</p>
  </blockquote>
  <p>this while the defined() operator is used successfully with the macro NUMBER_OF_UARTS.
  <strong>I can achieve the desired result</strong> omitting defined()</p>
  <pre><code>#define GET_UART_HANDLE_POINTER(id) (LPUART##id##_PERIPHERAL)?&amp;LPUART##id##_handle:nullptr
  </code></pre>
  <p>However I was wondering why defined does not work in the first example.</p>
  <p>Ide: MCUXpresso IDE v11.3.0 [Build 5222] [2021-01-11]
  Toolchain NXP MCU Tools
  Language C++
  Target Arm</p>