8

_PragmaVisual C++ 中是否有类似 ANSI C 运算符的东西?

例如,我正在尝试定义以下宏:

#ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x) _Pragma (#x)
#else  // #ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x)
#endif  // #ifdef _OPENMP

所以我可以绕过#pragma omp ...旧 GCC 编译器中未知的编译器警告。VisualC++ 中是否有类似的方法可用?

4

1 回答 1

7

是的,但它是两个下划线:__pragma

我不确定omppragma 是如何工作的,但是,这里有一个使用 VC++ 的optimizepragma 的例子:

#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
于 2011-01-24T12:49:49.717 回答