Este patrón también es útil para la detección de características de registros en microprocesadores, como en this question. Por ejemplo, puede haber dos archivos similares de cabecera, uno de los cuales define un temporizador, y que define 2:
cheapprocessor.h
:
#define TMR1 TMR1
extern volatile int TMR1;
expensiveprocessor.h
:
#define TMR1 TMR1
extern volatile int TMR1;
#define TMR2 TMR2
extern volatile int TMR2;
lo que significa en su código principal, cuando incluye un genérico processor.h
que delega en el encabezado apropiado para el destino, puede detectar características:
#include <processor.h>
#ifdef TMR2
x = TMR2;
#else
x = 0; // no timer, probably because we're on the cheaper model
#endif
dude en marcar esta pregunta como respondida;) – claf