En forma de codigo, se analiza en runtime, todo el codigo se carga dentro del micro.
int n = 1;
if(n==1)
{
Fprintf(PT1,"holaa mundo ");
}
else if(N==2)
{
Fprintf(PT2,"holaa mundo ");
}
Directivas, La diferencia es que N no es una variable, es una constante, la otra es que solo compila y carga el codigo de cual corresponda en el micro.
#define N 1
#IF N == 1
Fprintf(PT1,"holaa mundo ");
#ELIF N == 2
Fprintf(PT2,"holaa mundo ");
#ENDIF
Ejemplo de codigo, suponete este codigo
#define N 1
output_bit(PIN_A0,1);
#IF N == 1
Fprintf(PT1,"holaa mundo ");
#ELIF N == 2
Fprintf(PT2,"holaa mundo ");
#ENDIF
output_bit(PIN_A0,0);
En el micro solo se quedaria, (se omite el fprintf de PT2 ):
output_bit(PIN_A0,1);
Fprintf(PT1,"holaa mundo ");
output_bit(PIN_A0,0);
PD:
No se que tipo de clase sea el "STREAM" de los printf, tal ves sea un int, o algo interno a CCS, pero no creo que sea un string como para que puedas copiarlo asi.