Domanda

Sto tentando di usare OpenMP per creare un parallelo ciclo for in Visual Studio 2005 Professional. Ho incluso omp.h e specificate il compilatore flag / OpenMP. Tuttavia, non posso ottenere anche il più semplice parallelo per ciclo per compilare.

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

È possibile che questo produce compilatore C3005 errore sulla linea di #pragma.

Google non è stato di grande aiuto. Ho trovato solo un oscuro sito web giapponese con un utente che ha problemi simili. Nessuna menzione di una risoluzione.

Un blocco parallela standard compila bene.

#prgram omp parallel
{
    // Do some stuff
}

Cioè fino a quando si tenta di aggiungere un ciclo for.

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

È possibile che questo provoca errore del compilatore C3001. Sembra 'per' è confusione per il compilatore, ma non dovrebbe essere. Tutte le idee?

È stato utile?

Soluzione

Ho trovato il problema. Qualche genio ha definito la seguente macro in profondità all'interno delle intestazioni:

#define for   if ( false ) ; else for

La mia unica ipotesi è questo è stato utilizzato per ottenere le variabili dichiarate in cicli for a portata correttamente in Visual C ++ 6. indefiniti o commentando la macro ha risolto il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top