precompilazione in modo diverso di parti di codice.....

scusate il titolo del topic che sicuramente è poco chiaro...

provo a spiegarmi:

dovrei compilare parti di codice in modo diverso a seconda che una variabile, già definita e valorizzata prima, abbia un valore oppure un altro ... più o meno cosi:

#define id_micro '1'         // assegno alla variabile id_micro il valore '1'
// #define id_micro '2'         // assegno alla variabile id_micro il valore '2'

poi vorrei che compilasse così

      #if(id_micro = '1') // compila  blocco istruzioni 1
      blocco istruzioni 1;
      #endif

oppure così

      #if(id_micro = '2') // compila  blocco istruzioni 2
      blocco istruzioni 2;
      #endif

non so se mi sono spiegato.. insomma devo mettere lo stesso codice su due micro ma deve essere compilato in modo diverso su un micro rispetto all'altro.. e la differenza la introduco attivando questa linea
#define id_micro '1' // assegno alla variabile id_micro il valore '1'
o quest'altra
#define id_micro '2' // assegno alla variabile id_micro il valore '2'

ogni suggeriemnto e più che gradito.. mi piacerebbe anche capire se si puo fare qualcosa tipo

#if(id_micro = '1') // compila blocco istruzioni 1
... blocco istruzioni 1
#else if (id_micro = '2')
blocco istruzioni 2;
#endif

grazie e ciao

La compilazione condizionale serve proprio per inserire/escludere parti di codice a seconda di come imposti dei valori, però la sintassi che stai usando è errata:

Questa è quella corretta

#define micro1     
// #define micro2     

      #ifdef micro1
        // blocco istruzioni 1
      #endif    

     #ifdef micro2
      //  blocco istruzioni 2
      #endif

grazie astro....
ed esiste qualcosa per fare un if else endif??? ... vabbè ma non è importante posso fare come dici tu.. grazie...

Si la compilazione condizionale, o meglio le direttive del preprocessore, prevede anche la #else e la #elif (attenzione al '#'), p.e.:

#define micro1

#ifdef micro1
 // codice micro 1
#else
 // codice micro2
#endif

credo che intendesse più usare gli operatori logico/booleani.. quì un elenco delle direttive c++

http://www.cplusplus.com/doc/tutorial/preprocessor/

grazie lesto e astro... stasera mi leggo qualcosa... ciao

Se vuoi vedere degli esempi pratici puoi guardare il codice del core di Arduino o le sue libreria. Si fa molto uso delle direttive di precompilazione soprattutto per discriminare i diversi microcontrollori montati su Arduino.
Vedi ad esempio il codice per le seriali diverso per la UNO, MEGA e LEONARDO.