Teilen über


Compilerfehler C7688

"pragma omp atomic": Es wurde ein Ausdruck vom Skalartyp erwartet.

Hinweise

OpenMP schränkt Ausdrücke in #pragma omp atomic Konstrukten auf skalaren Typ ein.

Compilerfehler C7688 ist neu in Visual Studio 2022, Version 17.4. In früheren Compilerversionen würde der Compiler den Fehler C3048 ausgeben.

Beispiel

Der Beispielcode zeigt die Diagnose, die für nicht skalare Typen in #pragma omp atomic Konstrukten generiert wird.

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

Verwenden Sie skalare Typen in #pragma omp atomic Konstrukten, um dieses Problem zu beheben.