Да, но это два подчеркивания: __pragma
Я не уверен в том, как работает прагма omp
, однако, вот пример использования прагмы optimize
VC ++:
#define PRAGMA_OPTIMIZE_OFF __pragma(optimize("", off))
// These two lines are equivalent
#pragma optimize("", off)
PRAGMA_OPTIMIZE_OFF
РЕДАКТИРОВАТЬ: Я только что подтвердил, что прагмы omp
также можно использовать следующим образом:
#define OMP_PARALLEL_FOR __pragma(omp parallel for)
Итак, ваш макрос должен работать, если он определен какследует (обратите внимание, что в исходном коде неправильно использовался строковый оператор #x
:
#ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x) __pragma (x)
#else // #ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x)
#endif // #ifdef _OPENMP