Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
'
pragma omp atomic': oczekiwano wyrażenia typu skalarnego
Uwagi
Protokół OpenMP ogranicza wyrażenia w #pragma omp atomic konstrukcjach do typu skalarowego.
Błąd kompilatora C7688 jest nowy w programie Visual Studio 2022 w wersji 17.4. W poprzednich wersjach kompilatora był emitowany błąd C3048.
Przykład
Przykładowy kod przedstawia diagnostykę wygenerowaną dla typów nieskalarnych w #pragma omp atomic konstrukcjach.
// 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'
*/
Aby rozwiązać ten problem, użyj typów skalarnych w #pragma omp atomic konstrukcjach.