可能重复:
C/C++ pragma in define macro
Conditional “pragma omp”使用内部的#define将OpenMP编译
我如何使用OpenMP编译宏定义里面?例如。
#define A() { \
...a lot of code... \
#pragma omp for \
for(..) \
..do_for.. \
...another a lot of code \
}
可能重复:
C/C++ pragma in define macro
Conditional “pragma omp”使用内部的#define将OpenMP编译
我如何使用OpenMP编译宏定义里面?例如。
#define A() { \
...a lot of code... \
#pragma omp for \
for(..) \
..do_for.. \
...another a lot of code \
}
由于这是在这里找到答案Conditional "pragma omp"
C99具有
_Pragma
关键字,可以让你把什么否则将#pragma
内宏。喜欢的东西
#define OMP_PARA_INTERNAL _Pragma("omp parallel for")
所以,
#define OMP_PARA_FOR _Pragma("omp for")
#define A() { \
...a lot of code... \
OMP_PARA_FOR \
for(..) \
..do_for.. \
...another a lot of code \
}
几个_Pragma
s时,可以合并为一元运算符,如:
_Pragma("first pragma") _Pragma("Second pragma")
在Visual Studio中您可以使用__pragma
关键字来代替#pragma
。不幸的是,这是非标准的,所以如果你使用的是其他编译器,你必须弄清楚你的编译器是否支持类似的东西。
你不能因为#
里面的宏有另一个含义(要加引号(#somevar
)或连接变量(onevar ## anothervar
))。 如果您想要包含更复杂的代码,而不是函数调用,请使用本地函数并添加关键字inline
,以便内联宏,因为它是内联的。你只需要确保你传递里面使用的变量作为参数(如指针或引用)。作为替代,您可以使用#include
仅包含一个包含您的宏代码的代码文件。
我使用GCC编译器,在这里像'__pragma'关键字? – osgx