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