c++ - Preprocessor test for equality always evaluates true -
c++ - Preprocessor test for equality always evaluates true -
using this:
-dme=awesome and this:
#if me==awesome #error im awesome! #endif yields this:
registers.cpp:59:2: error: #error im awesome! but this:
#if me==notsogreat #error im confused! #endif yields this:
registers.cpp:59:2: error: #error im confused!
note doing -dme=awesome equivalent source file starting with:
#define me awesome now let's @ #if me==awesome. token replacement changes me awesome, final version of line is:
#if awesome==awesome when utilize == in preprocessor, alphabetic token not #defined else, gets replaced 0. tests #if 0 == 0 true, error displayed.
now, looking at:
#if me==notsogreat after token replacement is:
#if awesome==notsogreat which 1 time again equivalent #if 0 == 0, true.
if had #define awesome 5 before this, find first test true sec test false.
i guess trying observe if me had been defined awesome there no way that; can test whether me has been defined equal whatever awesome has been defined as.
c++ preprocessor
Comments
Post a Comment