我可以编写如下代码:
if (make_parallel)
{
#pragma omp parallel for
for (int i=0; i<n; i++)
{
//For loop stuff
}
}
else
{
//Identical for loop, minus the parallelisation
for (int i=0; i<n; i++)
{
//For loop stuff
}
}
有没有更整洁的方法来实现这一点,这样for循环就不必被复制?
[编辑]-所以这个解决方案在预处理级别有效
#define USE_OPENMP
//...
#ifdef USE_OPENMP
#pragma omp parallel for
#endif
for(int i=0;i<n;i++)
但这并不理想.但是我想得越多,因为定义平行区域也是预处理,所以它可能不能以一种整洁的方式成为条件化的?