문제

OpenMP를 사용하여 Visual Studio 2005 Professional에서 Loop for Loop을 만들려고합니다. omp.h를 포함시키고 /OpenMP 컴파일러 플래그를 지정했습니다. 그러나 루프가 컴파일하는 가장 간단한 평행조차 얻을 수 없습니다.

#pragma omp parallel for
for ( int i = 0; i < 10; ++i )
{
    int a = i + i;
}

위는 #Pragma 라인에서 컴파일러 오류 C3005를 생성합니다.

Google은 큰 도움이되지 않았습니다. 비슷한 문제가있는 사용자가있는 모호한 일본 웹 사이트 만 발견했습니다. 결의안에 대한 언급이 없습니다.

표준 병렬 블록은 잘 컴파일됩니다.

#prgram omp parallel
{
    // Do some stuff
}

그것은 당신이 for 루프를 추가하려고 할 때까지입니다.

#pragma omp parallel
{
    #pragma omp for
    for ( int i = 0; i < 10; ++i )
    {
        int a = i + i;
    }
}

위의 결과 컴파일러 오류 C3001을 일으 킵니다. 'for'가 컴파일러와 혼동되는 것 같습니다. 어떤 아이디어?

도움이 되었습니까?

해결책

나는 문제를 발견했다. 일부 천재는 헤더 내에서 다음 매크로를 정의했습니다.

#define for   if ( false ) ; else for

내 유일한 추측은 이것이 루프가 시각적 C ++에서 올바르게 범위를 범하기 위해 변수를 선언하는 데 사용되었다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top