openmp表示块错误

use*_*774 2 c openmp

为什么openmp会给我这个错误: -

错误:对于在'{'标记之前预期的语句

#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
#include <unistd.h>

int main (int argc, char *argv[]) 
{

#pragma omp parallel 
{

int a[100],b[100],c[100];
int i =0;

    for(; i < 100; i++){
    a[i] = i;
    b[i] = i;
    }

    #pragma omp parallel for schedule(static,5)
    {
    int i = 0;
        for( ; i < 100 ; i++){ // this is the for loop that is referred in the error message
    c[i] = a[i] + b[i];
    }

    }

}

printf("Outside parallel block \n");

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*rsi 5

首先,第二个OpenMP pragma不应该有"并行"; 你已经打开了一个并行块,你现在需要分享for循环的工作.

其次,你不能将并行封装成一般块; 它必须是for循环.如果您真的想要与i上面使用的不同,请执行以下操作:

#pragma omp for schedule(static,5)
for (int i=0; i < 100; i++)
{
    c[i] = a[i] + b[i];
}
Run Code Online (Sandbox Code Playgroud)