Вот такой вариант скомпилируется без ошибок
#define LEDOUT(var,bit) do {if ((var&bit)==0) P1OUT&=~0x01;\
else P1OUT|=0x01;} while(0)
if ((var_alrm&ALARM_BIT1)!=0)
LEDOUT(state,ALARM_BIT1);
else
LEDOUT(state,ALARM_BIT1);
А в таком варианте компилятор выдаст ошибку на строке с else
#define LEDOUT(var,bit) if ((var&bit)==0) P1OUT&=~0x01;\
else P1OUT|=0x01;
if ((var_alrm&ALARM_BIT1)!=0)
LEDOUT(state,ALARM_BIT1);
else //тут после работы препроцессора возникает ошибка
LEDOUT(state,ALARM_BIT1);