2013-08-14 8 views

Antwort

13

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!

+0

Vielen Dank! Gute Antwort! –

+0

Es ist am besten, Makrodefinitionen vollständig in Klammern zu setzen, die zu Ausdrücken expandieren: '#define NOASC (1 + ASC)' –

+0

@KeithThompson Guter Fang - Ich erinnerte mich daran, 'ASC' in Klammern zu setzen, aber nicht den resultierenden Ausdruck. – templatetypedef

Verwandte Themen