top | item 26468520

(no title)

ramshorns | 5 years 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.

discuss

order

jomar|5 years ago

For 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|5 years ago

For 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?