在Visual C ++中是否有类似ANSI C运算符_Pragma
的东西?
例如,我正在尝试定义以下宏:
#ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x) _Pragma (#x)
#else // #ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x)
#endif // #ifdef _OPENMP
因此,我可以绕过旧GCC编译器中未知#pragma omp ...
的编译器警告。
VisualC ++中是否有类似的方法?
答案 0 :(得分:7)
是的,但它有两个下划线:__pragma
我不确定omp
pragma是如何工作的,但是,这是使用VC ++的optimize
编译指示的示例:
#define PRAGMA_OPTIMIZE_OFF __pragma(optimize("", off))
// These two lines are equivalent
#pragma optimize("", off)
PRAGMA_OPTIMIZE_OFF
编辑:我刚刚确认omp
pragma也可以像这样使用:
#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