#ifdef WIN32 #elif WIN64 #endif

c-preprocessor, conditional-compilation

Solution

No, it shouldn't be. That's not to say that some obscure C compiler wouldn't accept it as such, but it isn't part of the C standard.

Normally, for something like this you would use either `#elifdef FOO` (which I've never actually seen in production code) or `#elif defined(FOO)` (like you mentioned).

This code appears to be working in a odd way; it's rather first checking if `WIN32` is defined, then checking if `WIN64` is nonzero.

Problem

I have come across some example code that goes like this: ``` #ifdef WIN32 ... #elif WIN64 ... #endif ``` In an `#ifdef` block, is it actually legal to use `#elif` to mean `#elif defined`?

Original source