Partager via


Erreur du compilateur C7688

'pragma omp atomic' : expression de type scalaire attendue

Notes

OpenMP limite les expressions dans #pragma omp atomic les constructions au type scalaire.

L’erreur du compilateur C7688 est nouvelle dans Visual Studio 2022 version 17.4. Dans les versions précédentes du compilateur, le compilateur émet l’erreur C3048.

Exemple

L’exemple de code montre les diagnostics générés pour les types non scalaires dans #pragma omp atomic les constructions.

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

Pour résoudre ce problème, utilisez des types scalaires dans #pragma omp atomic des constructions.