Question

Je cherche à utiliser OpenMP pour créer un parallèle boucle dans Visual Studio 2005 Professional. J'ai inclus omp.h et spécifié le drapeau du compilateur / OpenMP. Cependant, je ne peux pas même le plus simple parallèle pour la boucle à compiler.

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

Le produit ci-dessus d'erreur du compilateur C3005 à la ligne #pragma.

Google n'a pas été beaucoup d'aide. Je ne ai trouvé un site japonais obscure avec un utilisateur ayant des problèmes similaires. Aucune mention d'une résolution.

Un bloc parallèle standard compile bien.

#prgram omp parallel
{
    // Do some stuff
}

Jusqu'à ce que vous essayez d'ajouter une boucle.

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

Les causes ci-dessus erreur du compilateur C3001. Il semble « pour » est source de confusion pour le compilateur, mais il ne doit pas être. Toutes les idées?

Était-ce utile?

La solution

J'ai trouvé le problème. Certains génie a défini la profonde macro suivante dans les en-têtes:

#define for   if ( false ) ; else for

Ma seule estimation est cela a été utilisé pour obtenir les variables déclarées dans les boucles de champ correctement dans Visual C ++ 6. undef ou en commentant la macro a résolu le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top