#define

  • Se la direttiva si sviluppa su più righe, il testo di tutte le righe verrà sostituito nel programma al posto del simbolo (esempio)
  • Occorre prestare attenzione che il testo della macro viene sostituito nel programma al posto di un simbolo.
  • Due situazioni possono creare errori difficilmente individuabili:
    1. Se termineremo una macro con un commento //, il commento verrà sostituito al simbolo, insieme con il resto del testo. Se il simbolo non era in fondo alla riga, tutto quello che lo seguiva risulterà commentato. Questo problema non si pone con i commenti /* ... */(esempio)
    2. Se in una macro compare un'espressione logica o matematica, occorre ricordare che essa verrà sostituita come testo al posto di un simbolo. Se il simbolo, a sua volta, farà parte di un'espressione, il compilatore valuterà l'espressione risultante che potrà risultare diversa da quello che ci aspettiamo a causa della precedenza degli operatori. La soluzione è quella di racchiudere tra parentesi le espressioni delle macro.(esempio)

© Ing. Stefano Salvi - All rights reserved