Ich habe das in entweder mit dem #ifdef oder #else Zustand, nie die #elseif#elseif vs #elif (C/C++ Preprocessor)
#ifdef ...
#elseif defined(...)
#else
#endif
immer führt das Schreiben gefunden. Wenn jedoch #elif ersetzt wird, funktioniert es erwartungsgemäß basierend auf dem, was definiert ist. Welchen gewundenen Zweck erfüllt die Existenz von #elseif? Und wenn nicht, warum beschweren sich die Präprozessor nicht?
Vielleicht ist das der Grund, warum ich seit Jahren (Jahrzehnte, wirklich) hässliche # else/# endif Blöcke benutze, da sie zumindest zuverlässig sind!
Wenn die Sache nach '# ifdef' definiert ist, sollten Sie eine" ungültige Preprocessing-Direktive "Fehler sehen. ([Beispiel] (http://ideone.com/FCPtSD)) – molbdnilo