I am currently working on an already developed project written in MFC C++ and am facing a problem with an already present macro having the definition:
#define HEIGHT_TESTS 13
I am trying to change the value from within the code but I think since its a preprocessed definition, I am unable to do that. Is there a way I could get around this problem without having to change the original macro overall (as it might affect the original functionality of the program). I am just intending to change it in one particular condition, rest everywhere else it remains the same.
Just to let everyone know, I have obviously tried out using a different macro definition with the value (17) I am intending to use, but no luck as such.
Any help would be much appreciated.
You can
undef
ine it anddefine
again:outputs:
7
Please note that statements that start with
#
are preprocessor directives that are taken care of before the code is even compiled. In this case, this constantAAA
will be simply replaced by7
, i.e. it works just like a textual replacement with no additional checks of syntax, no type safety etc......which is main reason why you should avoid using macros and
#define
s where they can be replaced by static functions and variables :)Why "textual replacement" ?
Look at this code:
preprocessor goes line by line from the top to the bottom, doing this:
#define AAA 13
, so when I hitAAA
next time, I'll put there13
AAA
, I'm replacing it with13
7
, so I'll stop using13
redefAndPrint()
I'll put there7
transforming the given code into this one:
which will output
13713
and the latest#define AAA 4
won't be used at all.Something like the following: