
vikrant.gunnasriniva1.552494446331136E12 asked a question.
Preprocessor Directives
I am observing that else condition is firing even if if is satisfied.
Project Type: InstallScript project
Snippet of my code in Setup.Rul:
define FOO 1
if (FOO = 1)
MessageBox("FOO = 1",INFORMATION);
elif (FOO = 2)
MessageBox("FOO = 2",INFORMATION);
elif (FOO = 3)
MessageBox("FOO = 3",INFORMATION);
else
MessageBox("FOO = something else",INFORMATION);
endif
Two message boxes pop-up with messages "FOO = 1" and "FOO = something else".
Has anyone observed this behavior?
Thanks
You can work around this behavior by replacing any 'else' statements in a preprocessor block that contains any elif statements with:
elif 1
This should also work anywhere else is used, but is really only necessary as a workaround in preprocessor blocks like the one in your post.
This issue occurs due to how the compiler handles the else after an if or elif was true, and a subsequent elif was found. Replacing else with elif 1 avoids this behavior.