Search code examples
cmacrosopenmpc-preprocessorpragma

Using an openmp pragma inside #define


Possible Duplicates:
C/C++ pragma in define macro
Conditional “pragma omp”

How can I use an OpenMP pragmas inside a macro definition? E.g.

#define A() { \
 ...a lot of code... \
 #pragma omp for     \
 for(..)             \
  ..do_for..         \
 ...another a lot of code \
 }

Solution

  • As it was answered here Conditional "pragma omp"

    C99 has the _Pragma keyword that allows you to place what otherwise would be #pragma inside macros. Something like

      #define OMP_PARA_INTERNAL _Pragma("omp parallel for")
    

    So,

    #define OMP_PARA_FOR _Pragma("omp for")
    #define A() { \
     ...a lot of code... \
     OMP_PARA_FOR     \
     for(..)             \
      ..do_for..         \
     ...another a lot of code \
     }
    

    several _Pragmas can be combined as unary operator, e.g.:

    _Pragma("first pragma") _Pragma("Second pragma")