Megosztás a következőn keresztül:


C7688 fordítóhiba

'pragma omp atomic': skaláris típusú kifejezés várható

Megjegyzések

Az OpenMP a szerkezetek kifejezéseit #pragma omp atomic skaláris típusra korlátozza.

A C7688 fordítóhiba a Visual Studio 2022 17.4-es verziójában új. A korábbi fordítóverziókban a fordító C3048 hibát bocsát ki.

Example

A példakód a szerkezetek nem skaláris típusaihoz #pragma omp atomic létrehozott diagnosztikát mutatja be.

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

A probléma megoldásához használjon skaláris típusokat a #pragma omp atomic szerkezetekben.