Quando il preprocessore interpreta
#if THREADMODEL==NOASC
sostituirà THREADMODEL
con ASC
:
#if ASC==NOASC
A meno che non si dispone di #define
d ASC
e NOASC
di avere valori numerici, il preprocessore li sostituirà con valori 0 (prende qualsiasi simbolo indefinito e li sostituisce con 0):
#if 0==0
Questo quindi valuta 1
e quindi il preprocessore valuterà il blocco.
Per risolvere questo problema, provare a dare diversi valori numerici per ASC
e NOASC
, in questo modo:
#define ASC 0
#define NOASC (1 + (ASC))
Spero che questo aiuti!
Grazie mille! Bella risposta! –
È meglio separare completamente le definizioni di macro che si espandono in espressioni: '#define NOASC (1 + ASC)' –
@KeithThompson Buona cattura - Mi sono ricordato di parentesi con 'ASC', ma non l'espressione risultante. – templatetypedef