Delen via


Compilerfout C7688

'pragma omp atomic': verwacht een expressie van scalaire type

Opmerkingen

OpenMP beperkt expressies in #pragma omp atomic constructies tot scalaire typen.

Compilerfout C7688 is nieuw in Visual Studio 2022 versie 17.4. In eerdere compilerversies zou de compiler fout C3048 verzenden.

Voorbeeld

De voorbeeldcode toont diagnostische gegevens die zijn gegenereerd voor niet-scalaire typen in #pragma omp atomic constructies.

// 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'
*/

Gebruik scalaire typen in #pragma omp atomic constructies om dit probleem op te lossen.