OpenMP в Visual Studio 2005 - PullRequest
       10

OpenMP в Visual Studio 2005

0 голосов
/ 06 октября 2009

Я пытаюсь использовать OpenMP для создания параллельного цикла for в Visual Studio 2005 Professional. Я включил omp.h и указал флаг компилятора / openmp. Однако я не могу получить даже самую простую параллель для цикла для компиляции.

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

Выше приведено сообщение об ошибке компилятора C3005 в строке #pragma.

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' сбивает с толку компилятора, но этого не должно быть. Есть идеи?

1 Ответ

0 голосов
/ 14 октября 2009

Я нашел проблему. Гений определил следующий макрос глубоко внутри заголовков:

#define for   if ( false ) ; else for

Мое единственное предположение, что это использовалось для того, чтобы переменные, объявленные в циклах for, корректно отображались в Visual C ++ 6. Удаление или комментирование макроса решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...