4 ms·
Why does the C preprocessor need the #elif syntax at all? C doesn't have it, it just achieves "else if" by embedding the second if statement inside the else cla
by ramshorns 6y ago
Why does the C preprocessor need the #elif syntax at all? C doesn't have it, it just achieves "else if" by embedding the second if statement inside the else clause. But maybe that wouldn't work in the preprocessor?
#if FOO
foo();
#elif BAR
bar();
#endif
#if FOO
foo();
#else
#if BAR
bar();
#endif
#endif
I guess it works but it's clunkier.
- jomar 6y agoFor the same reason as in other languages (e.g., Perl, bash) with (effectively, in Perl's case) an explicit end-if keyword: so that you don't need a whole bunch of #endifs at the end of your conditional, one for each #if or #else … #if. C itself doesn't need this, because you can write `else if …` without needing to put another layer of braces around the subordinate `if` statement.
- xt00 6y agoFor the case of multiple else if’s using the below case would you need to start nesting them to get the same functionality as #elif?