OpenMP in Visual Studio 2005
-
19-09-2019 - |
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?
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.