Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
'
pragma omp atomic': previsto un'espressione di tipo scalare
Osservazioni:
OpenMP limita le espressioni nei #pragma omp atomic costrutti al tipo scalare.
L'errore del compilatore C7688 è una novità di Visual Studio 2022 versione 17.4. Nelle versioni precedenti del compilatore il compilatore genera l'errore C3048.
Esempio
Il codice di esempio mostra la diagnostica generata per i tipi non scalari nei #pragma omp atomic costrutti.
// C7688.cpp
// compile using /c /openmp:llvm
struct S { char c; };
S operator+(S, int);
void test()
{
S s1, s2;
#pragma omp atomic capture
{ s1 = s2; s2 = s1 + 1; }
}
/*
When built, the compiler emits:
.\C7688.cpp(10,10): error C7688: '#pragma omp atomic': expected an expression of scalar type
{ s1 = s2; s2 = s1 + 1; }
^
.\C7688.cpp(10,10): note: type is 'S'
*/
Per risolvere questo problema, usa i tipi scalari nei costrutti #pragma omp atomic.