2009-10-06 12 views
0

Je tente d'utiliser OpenMP pour créer une boucle parallèle pour Visual Studio 2005 Professional. J'ai inclus omp.h et spécifié le drapeau du compilateur/openmp. Cependant, je ne peux même pas obtenir le parallèle le plus simple pour la compilation. Ce qui précède produit l'erreur C3005 du compilateur sur la ligne #pragma.OpenMP dans Visual Studio 2005

Google n'a pas beaucoup aidé. J'ai seulement trouvé un site web japonais obscur avec un utilisateur ayant des problèmes similaires. Aucune mention d'une résolution.

Un bloc parallèle standard compile l'amende.

#prgram omp parallel 
{ 
    // Do some stuff 
} 

Jusqu'à ce que vous essayiez d'ajouter une boucle for.

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

causes ci-dessus erreur du compilateur C3001. Il semble que 'for' soit source de confusion pour le compilateur, mais cela ne devrait pas l'être. Des idées?

+0

C'est bizarre. Je viens de compiler les trois extraits sans problème. – macbirdie

Répondre

0

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 conjecture 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.