C Preprocessor testing definedness of multiple macros
Solution 1
Try:
#if defined(_WIN32) || defined(_WIN64)
// do stuff
#endif
The defined macro tests whether or not a name is defined and lets you apply logical operators to the result.
Solution 2
You must use #if
and special operator defined
Solution 3
I think it should be possible this way:
#if defined block1 || defined block2 /*or any other boolean operator*/
/*Code*/
#endif
More information here
Solution 4
Use defined:
#if defined(A) || defined(B)
#include <whatever.h>
#endif
Related videos on Youtube
Lefteris
Software developer currently located in Berlin, Germany. Loves C, OpenGL and building things from the bottom up. Graduate of the Engineering Department of the university of Tokyo, Japan.
Updated on August 02, 2020Comments
-
Lefteris almost 4 years
I searched the site but did not find the answer I was looking for so here is a really quick question.
I am trying to do something like that :
#ifdef _WIN32 || _WIN64 #include <conio.h> #endif
How can I do such a thing? I know that _WIN32 is defined for both 32 and 64 bit windows so I would be okay with either for windows detection. I am more interested in whether I can use logical operators like that with preprocessor directives, and if yes how, since the above does not work.
Compiling with gcc I get :
warning: extra tokens at end of #ifdef directive , and it basically just takes the first MACRO and ignores the rest.
-
Lefteris almost 15 yearsThank you , you were right. Exactly what I was looking for. That works fine :)