Usando definido (MACRO) dentro da instrução C if

Gostaria de escrever código emC algo assim

if(defined(MACRO))
  ...
else
  ...

mas não consegui encontrar nenhuma maneira de fazer isso emC, pois o operador de pré-processador definido (MACRO) funciona apenas dentro de # if's. Existe uma maneira de fazer isso?

O que eu realmente gosto de fazer é escrever:

ASSERT(UART, var >= 0);

Ond

#define ASSERT(NAME, TEST) \
  do { \
    if (defined(NAME) && !(TEST)) \
      printf("Assert failed"); \
  } while(0)

pode ativar as verificações ASSERT quando uma macro é definida e, se não for definida, as declarações não devem ser verificadas. Se você tentar fazer isso, receberá:

implicit declaration of function `defined'

, o que é bastante compreensível, pois o compilador GCC não encontra odefined()perador de pré-processado

questionAnswers(3)

yourAnswerToTheQuestion