Ho un ciclo nel mio codice C++/OpenMP che assomiglia a questo:Perché non sono consentite le variabili di indice OpenMP non firmate?
#pragma omp parallel for
for(unsigned int i=0; i<count; i++)
{
// do stuff
}
Quando compilo esso (con Visual Studio 2005) ottengo il seguente errore:
error C3016: 'i' : index variable in OpenMP 'for' statement must have signed integral type
I capire che l'errore si verifica perché i
non è firmato anziché firmato e se si modifica i
da firmare rimosso questo errore. Quello che voglio sapere è perché è un errore? Perché non sono consentite variabili indice non firmate? Guardando la pagina MSDN per questo errore non mi dà alcun indizio.
Siamo precisi qui: i compilatori MS C/C++ in bundle con VS 2013 potrebbero non supportare OpenMP dopo v2.5 ma i compilatori Intel, che si integrano abbastanza bene con VS, supportano OpenMP 3.1. Se altri compilatori che si integrano con VS supportano lo standard più recente che non conosco. –
A destra, corretto. –