c++ - 在预处理器指令中使用 openmp 时出错

标签 c++ c parallel-processing openmp

我正在尝试在预处理器指令中使用 OpenMP 代码,但在编译代码时出现错误。 我正在尝试做如下的事情。

 #include<stdio.h>
 #include<omp.h>
 #define SUM(_X_)
 sum=0.0                            \
 /*I want to put openmp     
  parallel for directive here       \   
 i.e., #parallel for reduction(+:sum)\
  */                                 \
 for (i = 0 ; i < 10 ; i++)          \  
    sum += _X_[i];              \
int main()
{
   int i=0,x[10];
   float sum=0;
   for(i=0;i<10;i++)
      x[i]=i;
   SUM(x);
}       

有人知道如何实现吗?

最佳答案

在 C 中,从 C99 开始,您可以使用 _Pragma 运算符,它允许您将 pragma 放在宏中,例如

#define SUM(_X_)                         \
sum=0.0;                                 \
_Pragma("parallel for reduction(+:sum)") \
for (i = 0 ; i < 10 ; i++)               \
    sum += _X_[i]

顺便说一句,要小心,永远不要在宏定义的末尾放置终止 ;

关于c++ - 在预处理器指令中使用 openmp 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17213327/

相关文章:

ncurses 窗口中的光标不在所需位置

multithreading - 有哪些不同类型的并行性?

parallel-processing - Ipython 并行脚本运行并返回局部变量

c++ - C++ 中的通用访问者基类模板 - 重载问题

python - 在 Armbian 上从 i2c 2 读取 BME680

c++ - 内存映射文件的奇怪行为,一些观察和一些问题

c - 获取字符数组的输入

parallel-processing - C# 中的并行 A* 搜索 - 不同的路径

c++ - gmtime_r 和 gmtime_s 的区别

c++ - 重载运算符和链接