Wenn der Präprozessor
#if THREADMODEL==NOASC
interpretiert wird ersetzt THREADMODEL
mit ASC
:
#if ASC==NOASC
Sofern Sie #define
d ASC
und NOASC
haben numerische Werte zu haben, der Präprozessor wird sie ersetzen mit 0 Werten (es dauert keine undefinierten Symbole und ersetzt sie durch 0):
#if 0==0
Dies wird dann 1
ausgewertet und so wird der Präprozessor den Block auswerten.
Um dies zu beheben, versuchen verschiedene numerische Werte ASC
und NOASC
geben, wie folgt aus:
#define ASC 0
#define NOASC (1 + (ASC))
hoffe, das hilft!
Vielen Dank! Gute Antwort! –
Es ist am besten, Makrodefinitionen vollständig in Klammern zu setzen, die zu Ausdrücken expandieren: '#define NOASC (1 + ASC)' –
@KeithThompson Guter Fang - Ich erinnerte mich daran, 'ASC' in Klammern zu setzen, aber nicht den resultierenden Ausdruck. – templatetypedef