C Preprocessor testing definedness of multiple macros

20,517

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
Share:
20,517

Related videos on Youtube

Lefteris
Author by

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, 2020

Comments

  • Lefteris
    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
    Lefteris almost 15 years
    Thank you , you were right. Exactly what I was looking for. That works fine :)