Ich habe eine Schleife in meinem C++/OpenMP-Code, der wie folgt aussieht:Warum sind keine OpenMP-Indexvariablen ohne Vorzeichen zulässig?
#pragma omp parallel for
for(unsigned int i=0; i<count; i++)
{
// do stuff
}
Wenn ich es kompilieren (mit Visual Studio 2005) bekomme ich folgende Fehlermeldung:
error C3016: 'i' : index variable in OpenMP 'for' statement must have signed integral type
I Verstehen Sie, dass der Fehler auftritt, da i
nicht signiert und unsigniert ist, und i
zu ändern geändert werden, um diesen Fehler zu entfernen. Was ich wissen will ist warum ist das ein Fehler? Warum sind nicht vorzeichenlose Indexvariablen zulässig? Ein Blick auf die MSDN Seite für diesen Fehler gibt mir keine Hinweise.
Lassen Sie uns hier präzisieren: die mit VS 2013 gebündelten MS C/C++ Compiler unterstützen OpenMP möglicherweise nicht nach V2.5, aber die Intel Compiler, die gut genug mit VS integrieren, unterstützen OpenMP 3.1. Ob andere Compiler, die in VS integrieren, den neueren Standard unterstützen, weiß ich nicht. –
Richtig, korrigiert. –